Hive-forespørgsler: Bestil efter, gruppér efter, distribuer efter, klynge efter eksempler

Indholdsfortegnelse:

Anonim

Hive leverer SQL-type forespørgselssprog til ETL-formålet oven på Hadoop-filsystemet.

Hive Query sprog (HiveQL) giver SQL type miljø i Hive til at arbejde med tabeller, databaser, forespørgsler.

Vi kan have en anden type klausuler tilknyttet Hive til at udføre datamanipulationer og forespørgsler af forskellig type. For bedre forbindelse med forskellige noder uden for miljøet. HIVE giver også JDBC-forbindelse.

Hive-forespørgsler indeholder følgende funktioner:

  • Datamodellering såsom oprettelse af databaser, tabeller osv.
  • ETL-funktionaliteter såsom ekstraktion, transformation og indlæsning af data i tabeller
  • Deltager i at flette forskellige datatabeller
  • Brugerspecifikke brugerdefinerede scripts for at gøre det nemmere at kode
  • Hurtigere forespørgselsværktøj oven på Hadoop

I denne artikel lærer du-

  • Bestil efter forespørgsel
  • Gruppér efter forespørgsel
  • Sorter efter
  • Cluster By
  • Distribuer efter

Oprettelse af tabel i bikuben

Før vi begynder med vores hovedemne til denne tutorial, opretter vi først en tabel, der skal bruges som referencer til den følgende tutorial.

Her i denne vejledning skal vi oprette tabel "medarbejdere_guru" med 6 kolonner.

Fra ovenstående skærmbillede

  1. Vi opretter tabel "medarbejdere_guru" med 6 kolonneværdier som Id, Navn, Alder, Adresse, Løn, Afdeling, som tilhører de ansatte, der er til stede i organisationen "guru."
  2. Her i dette trin indlæser vi data i medarbejder_guru-tabellen. De data, som vi skal indlæse, placeres under medarbejder.txt-filen

Rækkefølge efter forespørgsel:

ORDER BY-syntaksen i HiveQL svarer til syntaksen for ORDER BY på SQL-sprog.

Ordne efter er den klausul, vi bruger med "SELECT" -erklæringen i Hive-forespørgsler, som hjælper med at sortere data. Sorter efter klausul brug kolonner i Hive-tabeller til at sortere bestemte kolonneværdier nævnt med Sorter efter. Uanset hvilket kolonnenavn vi definerer rækkefølgen efter klausul, vælger forespørgslen og viser resultaterne ved stigende eller faldende rækkefølge for de særlige kolonneværdier.

Hvis den nævnte rækkefølge efter felt er en streng, vises resultatet i leksikografisk rækkefølge. I den bageste ende skal den overføres til en enkelt reducering.

Fra ovenstående skærmbillede kan vi observere følgende

  1. Det er forespørgslen, der udfører på tabellen "workers_guru" med ORDER BY-klausulen med Afdelingen som defineret ORDER BY-kolonnenavn.

    "Afdeling" er streng, så den viser resultater baseret på leksikografisk rækkefølge.

  2. Dette er faktisk output for forespørgslen. Hvis vi observerer det korrekt, kan vi se, at det får resultater vist baseret på afdelingskolonne som ADMIN, økonomi og så videre, for at ordreforespørgsel skal udføres.

Forespørgsel:

SELECT * FROM employees_guru ORDER BY Department;

Gruppér efter forespørgsel:

Gruppér efter klausul brug kolonner i Hive-tabeller til gruppering af bestemte kolonneværdier, der er nævnt med gruppen efter. Uanset hvilket kolonnenavn vi definerer en "groupby" -klausul, vælger forespørgslen og viser resultaterne ved at gruppere de bestemte kolonneværdier.

For eksempel viser skærmbilledet nedenfor det samlede antal medarbejdere, der er til stede i hver afdeling. Her har vi "Afdeling" som gruppe efter værdi.

Fra ovenstående skærmbillede vil vi observere følgende

  1. Det er forespørgslen, der udføres på tabellen "medarbejdere_guru" med GROUP BY-klausulen med Afdeling som defineret GROUP BY-kolonnenavn.
  2. Outputtet, der vises her, er afdelingens navn, og medarbejderne tæller i forskellige afdelinger. Her er alle medarbejdere tilhørende den specifikke afdeling grupperet efter og vist i resultaterne. Så resultatet er afdelingens navn med det samlede antal medarbejdere til stede i hver afdeling.

Forespørgsel:

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

Sorter efter:

Sorter efter klausul udføres på kolonnenavne på Hive-tabeller for at sortere output. Vi kan nævne DESC til at sortere rækkefølgen i faldende rækkefølge og nævne ASC for stigende rækkefølge af typen.

I denne sortering sorteres rækkerne, før de tilføres reduceringsanordningen. Sorter altid efter afhænger af kolonnetyper.

For eksempel, hvis kolonnetyper er numeriske, sorteres den i numerisk rækkefølge, hvis kolonnetyperne er streng, sorteres den i leksikografisk rækkefølge.

Fra ovenstående skærmbillede kan vi observere følgende:

  1. Det er forespørgslen, der udfører på tabellen "medarbejdere_guru" med SORT BY-klausulen med "id" som definerer Sorteret efter kolonnenavn. Vi brugte nøgleordet DESC.
  2. Så det viste output vil være i faldende rækkefølge efter "id".

Forespørgsel:

SELECT * from employees_guru SORT BY Id DESC;

Klynge af:

Cluster By bruges som et alternativ til både Distribute BY- og Sort BY-klausuler i Hive-QL.

Cluster BY-klausul, der bruges i tabeller, der findes i Hive. Hive bruger kolonnerne i Cluster by til at distribuere rækkerne blandt reduceringsanordninger. Cluster BY-kolonner går til flere reduceringsværktøjer.

  • Det sikrer sorteringsordrer af værdier, der findes i flere reduceringsanordninger

For eksempel Cluster By-klausul nævnt i kolonnen Id i tabellen workers_guru-tabellen. Outputtet, når denne forespørgsel udføres, giver resultater til flere reduktionsmidler i bagenden. Men som frontend er det en alternativ klausul for både Sortér efter og Distribuer efter.

Dette er faktisk back end-processen, når vi udfører en forespørgsel med sorter efter, gruppere efter og klynge efter i form af Map reducere rammer. Så hvis vi vil gemme resultater i flere reduktionsmidler, går vi med Cluster By.

Fra ovenstående skærmbillede får vi følgende observationer:

  1. Det er forespørgslen, der udfører CLUSTER BY-klausul om Id-feltværdi. Her vil det få en slags Id-værdier.
  2. Det viser id og navne til stede i guru_employees sorteret sorteret efter

Forespørgsel:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Distribuer efter:

Distribuer BY-klausul, der bruges på tabeller, der findes i Hive. Hive bruger kolonnerne i Distribuere ved til at distribuere rækkerne blandt reduceringsanordninger. Alle Distribuer BY-kolonner går til den samme reducering.

  • Det sikrer, at hver af N-reduceringsanordningerne får ikke-overlappende søjleområder
  • Det sorterer ikke output for hver reducering

Fra ovenstående skærmbillede kan vi observere følgende

  1. FORDELING AF Klausul, der udfører på Id for "empoloyees_guru" -tabellen
  2. Output, der viser id, navn. I bagenden går den til den samme reducering

Forespørgsel:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;