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.
Uit de bovenstaande schermafbeelding,
- 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.
- 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.
Uit de bovenstaande schermafbeelding kunnen we het volgende waarnemen
- 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.
- 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.
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken
- 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.
- 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.
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken:
- 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.
- 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.
Uit de bovenstaande schermafbeelding kunnen we de volgende observaties maken:
- 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.
- 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
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken
- DISTRIBUTE BY Clausule die wordt uitgevoerd op de ID van de tabel 'empoloyees_guru'
- Uitvoer toont Id, Naam. Aan de achterkant gaat het naar dezelfde reducer
Query:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;






