Hive-spørsmål: Bestill etter, gruppere etter, distribuere etter, klynge etter eksempler

Innholdsfortegnelse:

Anonim

Hive tilbyr SQL-spørringsspråk for ETL-formålet på toppen av Hadoop-filsystemet.

Hive Query language (HiveQL) gir SQL-type miljø i Hive for å jobbe med tabeller, databaser, spørsmål.

Vi kan ha en annen type klausuler knyttet til Hive for å utføre databehandling og spørring av forskjellige typer. For bedre tilkobling med forskjellige noder utenfor miljøet. HIVE gir også JDBC-tilkobling.

Hive-spørringer gir følgende funksjoner:

  • Datamodellering som opprettelse av databaser, tabeller osv.
  • ETL-funksjoner som ekstraksjon, transformasjon og lasting av data i tabeller
  • Blir sammen for å slå sammen forskjellige datatabeller
  • Brukerspesifikke egendefinerte skript for enkel kode
  • Raskere spørringsverktøy på toppen av Hadoop

I denne artikkelen vil du lære-

  • Bestill etter forespørsel
  • Grupper etter spørsmål
  • Sorter etter
  • Cluster By
  • Distribuer av

Lage tabell i bikube

Før vi begynner med hovedtemaet for denne opplæringen, oppretter vi først en tabell for å bruke den som referanser for følgende opplæring.

Her i denne opplæringen skal vi lage tabellen "ansatte_guru" med 6 kolonner.

Fra skjermbildet ovenfor,

  1. Vi lager tabellen "ansatte_guru" med 6 kolonneverdier som Id, Navn, Alder, Adresse, Lønn, Avdeling, som tilhører de ansatte som er tilstede i organisasjonen "guru."
  2. Her i dette trinnet laster vi inn data i workers_guru-tabellen. Dataene som vi skal laste vil bli plassert under Staff.txt-filen

Sorter etter forespørsel:

ORDER BY-syntaksen i HiveQL ligner syntaksen til ORDER BY i SQL-språk.

Order by er klausulen vi bruker med "SELECT" -uttrykk i Hive-spørringer, som hjelper til med å sortere data. Ordne etter paragraf, bruk kolonner på Hive-tabeller for å sortere bestemte kolonneverdier nevnt med Ordne etter. Uansett hvilket kolonnenavn vi definerer rekkefølgen etter paragraf, velger spørringen og viser resultatene ved å stige eller synke rekkefølgen på de spesielle kolonneverdiene.

Hvis den nevnte rekkefølgen etter felt er en streng, vil den vise resultatet i leksikografisk rekkefølge. På baksiden må den overføres til en enkelt redusering.

Fra skjermbildet ovenfor kan vi observere følgende

  1. Det er spørringen som utfører på "workers_guru" -tabellen med ORDER BY-setningen med avdeling som definert ORDER BY-kolonnenavn.

    "Avdeling" er streng så den vil vise resultater basert på leksikografisk rekkefølge.

  2. Dette er faktisk utdata for spørringen. Hvis vi observerer det riktig, kan vi se at det vises resultater basert på avdelingskolonne som ADMIN, økonomi og så videre for å kunne utføre.

Spørring:

SELECT * FROM employees_guru ORDER BY Department;

Grupper etter spørsmål:

Grupper etter paragraf bruk kolonner på Hive-tabeller for å gruppere bestemte kolonneverdier nevnt med gruppen etter. Uansett hvilket kolonnenavn vi definerer en "gruppeby" -setning, vil spørringen velge og vise resultater ved å gruppere de spesielle kolonneverdiene.

For eksempel vil skjermbildet nedenfor vise det totale antallet ansatte til stede i hver avdeling. Her har vi "Avdeling" som gruppe etter verdi.

Fra skjermbildet ovenfor vil vi observere følgende

  1. Det er spørringen som utføres på tabellen "ansatte_guru" med GROUP BY-setningen med avdeling som definert GROUP BY-kolonnenavn.
  2. Produksjonen som vises her er avdelingsnavnet, og de ansatte teller i forskjellige avdelinger. Her er alle ansatte tilhørende den spesifikke avdelingen gruppert etter og vist i resultatene. Så resultatet er avdelingsnavn med det totale antallet ansatte til stede i hver avdeling.

Spørsmål:

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

Sorter etter:

Sorter etter klausul utføres på kolonnenavn på Hive-tabeller for å sortere utdataene. Vi kan nevne DESC for å sortere rekkefølgen i synkende rekkefølge og nevne ASC for stigende rekkefølge av typen.

I denne typen sorterer den radene før den mates til reduksjonsgiret. Sorter alltid etter, avhenger av kolonnetyper.

For eksempel, hvis kolonnetyper er numeriske, vil den sorteres i numerisk rekkefølge hvis kolonnetypene er streng, vil den sorteres i leksikografisk rekkefølge.

Fra skjermbildet ovenfor kan vi observere følgende:

  1. Det er spørsmålet om det å utføre på tabellen "ansatte_guru" med SORT BY-setningen med "id" som definere Sorter etter kolonnenavn. Vi brukte nøkkelordet DESC.
  2. Så utgangen som vises vil være i synkende rekkefølge av "id".

Spørsmål:

SELECT * from employees_guru SORT BY Id DESC;

Klynge av:

Cluster By brukes som et alternativ for både Distribuere BY og Sorter BY-ledd i Hive-QL.

Cluster BY-setning brukt på tabeller i Hive. Hive bruker kolonnene i Cluster by for å distribuere radene mellom reduseringsanordninger. Cluster BY-kolonner går til flere reduksjoner.

  • Det sørger for sorteringsordrer av verdier som er tilstede i flere reduksjoner

For eksempel Cluster By-ledd som er nevnt i Id-kolonnenavnet på tabellen ansatte_guru-tabellen. Resultatet når du utfører denne spørringen, vil gi resultater til flere reduksjonsanordninger i bakenden. Men som frontend er det en alternativ klausul for både Sorter etter og Distribuer etter.

Dette er faktisk sluttprosessen når vi utfører et spørsmål med sorter etter, gruppere etter og klynge etter når det gjelder kartreduserende rammeverk. Så hvis vi vil lagre resultatene i flere reduksjonsmidler, går vi med Cluster By.

Fra skjermbildet ovenfor får vi følgende observasjoner:

  1. Det er spørringen som utfører CLUSTER BY-ledd på ID-feltverdien. Her kommer det til å bli en slags Id-verdier.
  2. Den viser ID og navn tilstede i guru_employees sortert etter

Spørsmål:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Distribuer av:

Distribuer BY-setningen som brukes på tabeller i Hive. Hive bruker kolonnene i Distribuer av for å distribuere radene mellom reduseringsanordninger. Alle Distribuer BY-kolonnene vil gå til samme reduksjonsmiddel.

  • Det sikrer at hver av N-reduseringene får ikke-overlappende kolonneområder
  • Det sorterer ikke utdataene fra hver reduksjon

Fra skjermbildet ovenfor kan vi observere følgende

  1. DISTRIBUTE BY Clause performing on Id of "empoloyees_guru" table
  2. Utgang som viser ID, navn. På baksiden vil den gå til samme redusering

Spørsmål:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;