Hive-query's: sorteren op, groeperen op, distribueren op, Cluster Door voorbeelden

Hive biedt daarnaast een querytaal van het SQL-type voor het ETL-doel Hadoop bestandssysteem.

Hive Query-taal (HiveQL) biedt een SQL-type omgeving in Hive om te werken met tabellen, databases en query's.

Er kunnen verschillende soorten clausules aan Hive zijn gekoppeld om gegevensmanipulaties en -query's van verschillende typen uit te voeren. Voor betere connectiviteit met verschillende knooppunten buiten de omgeving. HIVE biedt ook JDBC-connectiviteit.

Hive-query's bieden de volgende functies:

  • Gegevensmodellering zoals het maken van databases, tabellen, enz.
  • ETL-functionaliteiten zoals ExtracGegevens transformeren en in tabellen laden
  • Sluit zich aan bij om verschillende gegevenstabellen samen te voegen
  • Gebruikerspecifieke aangepaste scripts voor codegemak
  • Snellere querytool bovenop Hadoop

Tabel maken in Hive

Voordat we met het hoofdonderwerp van deze tutorial beginnen, maken we eerst een tabel die we als referentie voor de volgende tutorial kunnen gebruiken.

Hier in deze tutorial gaan we tabel โ€œemployees_guruโ€ maken met 6 kolommen.

Tabel maken in Hive

Uit de bovenstaande schermafbeelding,

  1. We maken een tabel โ€˜employees_guruโ€™ met 6 kolomwaarden, zoals Id, Naam, Leeftijd, Adres, Salaris, Afdeling, die toebehoort aan de werknemers die aanwezig zijn in de โ€˜guruโ€™ van de organisatie.
  2. Hier in deze stap laden we gegevens in de tabel Employees_guru. De gegevens die we gaan laden worden onder het Employees.txt-bestand geplaatst

Bestel op aanvraag

De ORDER BY-syntaxis in HiveQL is vergelijkbaar met de syntaxis van ORDER BY in SQL taal.

Order by is de clausule die we gebruiken met de โ€œSELECTโ€ -instructie in Hive-query's, waarmee u gegevens kunt sorteren. Order by-clausule gebruikt kolommen in Hive-tabellen voor het sorteren van bepaalde kolomwaarden die worden vermeld bij Order by. Voor welke kolomnaam we ook definiรซren, de volgorde per clausule wordt door de query geselecteerd en de resultaten weergegeven in oplopende of aflopende volgorde van de specifieke kolomwaarden.

Als de genoemde veldvolgorde een string is, wordt het resultaat in lexicografische volgorde weergegeven. Aan de achterkant moet het worden doorgegeven aan een enkele reducer.

Bestel per zoekopdracht

Uit de bovenstaande schermafbeelding kunnen we het volgende waarnemen

  1. Het is de query die wordt uitgevoerd in de tabel "employees_guru" met de ORDER BY-clausule met Afdeling zoals gedefinieerd. ORDER BY-kolomnaam. 'Afdeling' is String, zodat de resultaten worden weergegeven op basis van de lexicografische volgorde.
  2. Dit is de werkelijke output voor de query. Als we het goed bekijken, kunnen we zien dat de resultaten worden weergegeven op basis van de kolom Department, zoals ADMIN, Finance, enzovoort, om de query uit te voeren.

Vraag:

SELECT * FROM employees_guru ORDER BY Department;

Groeperen op zoekopdracht

De GROUP BY-clausule gebruikt kolommen in Hive-tabellen voor groepering.ping De specifieke kolomwaarden die worden genoemd in de GROUP BY-clausule. Voor elke kolomnaam waarvoor we een "GROUP BY"-clausule definiรซren, selecteert en toont de query de resultaten op basis van de groep.ping de specifieke kolomwaarden.

In de onderstaande schermafbeelding wordt bijvoorbeeld het totale aantal werknemers op elke afdeling weergegeven. Hier hebben we 'Afdeling' als Groep op waarde.

Groeperen op zoekopdracht

Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken

  1. Het is de query die wordt uitgevoerd op de tabel โ€œemployees_guruโ€ met de GROUP BY-clausule met Afdeling zoals gedefinieerd in de GROUP BY-kolomnaam.
  2. De output die hier wordt getoond is de afdelingsnaam en de werknemers tellen in verschillende afdelingen. Hier worden alle werknemers die tot de specifieke afdeling behoren gegroepeerd en weergegeven in de resultaten. Het resultaat is dus de afdelingsnaam met het totale aantal werknemers dat aanwezig is in elke afdeling.

Query:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Sorteer op

De Sort by-clausule wordt uitgevoerd op kolomnamen van Hive-tabellen om de uitvoer te sorteren. We kunnen DESC vermelden voor het sorteren van de volgorde in aflopende volgorde en ASC voor de oplopende volgorde van de sortering.

Bij deze sortering worden de rijen gesorteerd voordat deze naar het verloopstuk worden gevoerd. Altijd sorteren op is afhankelijk van kolomtypen.

Als kolomtypen bijvoorbeeld numeriek zijn, wordt deze in numerieke volgorde gesorteerd. Als de kolomtypen string zijn, wordt in lexicografische volgorde gesorteerd.

Sorteer op

Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken:

  1. Het is de query die wordt uitgevoerd in de tabel โ€œemployees_guruโ€ met de SORT BY-clausule met โ€œidโ€ zoals de kolomnaam SORT BY definieert. We hebben het trefwoord DESC gebruikt.
  2. De weergegeven uitvoer zal dus in aflopende volgorde van โ€œidโ€ zijn.

Query:

SELECT * from employees_guru SORT BY Id DESC;

Cluster By

Cluster Door gebruikt als alternatief voor de clausules Distribute BY en Sort BY in Hive-QL.

Cluster BY-clausule die wordt gebruikt in tabellen die aanwezig zijn in Hive. Hive gebruikt de kolommen in Cluster door om de rijen over verloopstukken te verdelen. Cluster BY-kolommen gaan naar de meerdere verloopstukken.

  • Het zorgt voor sorteervolgorde van waarden die aanwezig zijn in meerdere reducers

Bijvoorbeeld Cluster Door clausule vermeld in de Id-kolomnaam van de tabel werknemers_guru tabel. De uitvoer bij het uitvoeren van deze query geeft resultaten aan meerdere reducers aan de achterkant. Maar als front-end is het een alternatieve clausule voor zowel Sort By als Distribute By.

Dit is eigenlijk een back-endproces wanneer we een query uitvoeren met sorteren op, groeperen op en clusteren op in termen van Map reduce framework. Dus als we resultaten in meerdere reducers willen opslaan, gaan we met Cluster Door.

Cluster By

Uit de bovenstaande schermafbeelding kunnen we de volgende observaties maken:

  1. Het is de query die de CLUSTER BY-component uitvoert op de waarde van het Id-veld. Hier gaat het een sortering op Id-waarden krijgen.
  2. Het toont de ID en namen die aanwezig zijn in de sortering guru_employees, gerangschikt op

Query:

SELECT  Id, Name from employees_guru CLUSTER BY Id;

Verdeel door

Distribute BY-clausule die wordt gebruikt in tabellen die aanwezig zijn in Hive. Hive gebruikt de kolommen in Distribute by om de rijen over reducers te verdelen. Alle Distribute BY-kolommen gaan naar hetzelfde reducer.

  • Het zorgt ervoor dat elk van de N reducers geen overlapping krijgt.ping bereiken van kolom
  • Het sorteert niet de uitvoer van elke reducer

Verdeel door

Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken

  1. DISTRIBUTE BY Clausule die wordt uitgevoerd op de ID van de tabel 'empoloyees_guru'
  2. Uitvoer toont Id, Naam. Aan de achterkant gaat het naar dezelfde reducer

Query:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;

Vat dit bericht samen met: