Hive-query's: sorteren op, groeperen op, distribueren op, clusteren op 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 informatiewing Kenmerken:

  • Gegevensmodellering zoals het maken van databases, tabellen, enz.
  • ETL-functionaliteiten zoals extractie, transformatie en laden van gegevens in tabellen
  • 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 beginnen met ons hoofdonderwerp voor deze tutorial, zullen we eerst een tabel maken om deze te gebruiken als referentie voor de volgende handleiding.wing tutorial.

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 zienwing

  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 daadwerkelijke uitvoer voor de query. Als we het goed observeren, kunnen we zien dat de resultaten worden weergegeven op basis van de afdelingskolom, zoals ADMIN, Financiën enzovoort, om de query uit te voeren.

Vraag:

SELECT * FROM employees_guru ORDER BY Department;

Groeperen op zoekopdracht

Group by-clausule gebruikt kolommen in Hive-tabellen voor het groeperen van bepaalde kolomwaarden die worden vermeld in de group by. Voor welke kolomnaam we ook definiëren, we definiëren een 'groupby'-clausule. De query selecteert en geeft resultaten weer door de specifieke kolomwaarden te groeperen.

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 zullen we het volgende observerenwing

  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 uitvoer showing hier is de afdelingsnaam en de medewerkers tellen mee op verschillende afdelingen. Hier worden alle medewerkers van de specifieke afdeling gegroepeerd en weergegeven in de resultaten. Het resultaat is dus de afdelingsnaam met het totale aantal medewerkers op 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 zienwing:

  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;

Clusteren op

Cluster By wordt 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 by om de rijen over reducers te verdelen. Cluster BY-kolommen gaan naar de meerdere reducers.

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

De Cluster By-clausule wordt bijvoorbeeld vermeld in de kolomnaam Id van de tabel medewerkers_guru. 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 het Map Reduce-framework. Dus als we resultaten in meerdere reducers willen opslaan, kiezen we voor Cluster By.

Clusteren op

Uit de bovenstaande schermafbeelding krijgen we de volgende informatiewing waarnemingen:

  1. Het is de query die de CLUSTER BY-clausule uitvoert op de veldwaarde Id. Hier krijgt het een sortering op ID-waarden.
  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 verloopstukken niet-overlappende kolombereiken krijgt
  • Het sorteert niet de uitvoer van elke reducer

Verdeel door

Uit de bovenstaande schermafbeelding kunnen we het volgende waarnemenwing

  1. DISTRIBUTE BY Clausule die wordt uitgevoerd op de ID van de tabel 'empoloyees_guru'
  2. Uitgangshowing Identiteit, naam. Aan de achterkant gaat het naar hetzelfde verloopstuk

Query:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;