Hive Bli med og SubQuery-veiledning med eksempler

Bli med på spørsmål

Forespørsler om å bli med kan utføres på to tabeller i Hive. For forståelse Bli med Concepts helt klart her lager vi to tabeller her,

  • Sample_joins (relatert til kundedetaljer)
  • Sample_joins1 (Relatert til ordredetaljer utført av ansatte)

Trinn 1) Oppretting av tabell "sample_joins" med kolonnenavn ID, navn, alder, adresse og lønn til de ansatte

Bli med i spørringer

Trinn 2) Laste og vise data

Bli med i spørringer

Fra skjermbildet ovenfor

  1. Laster inn data til sample_joins fra Customers.txt
  2. Viser sample_joins-tabellinnhold

Trinn 3) Oppretting av sample_joins1-tabell og lasting, visning av data

Bli med i spørringer

Fra skjermbildet ovenfor kan vi observere følgende

  1. Oppretting av tabell sample_joins1 med kolonnene Orderid, Date1, Id, Amount
  2. Laster data til sample_joins1 fra orders.txt
  3. Viser poster som finnes i sample_joins1

Fremover vil vi se forskjellige typer sammenføyninger som kan utføres på tabeller vi har opprettet, men før det må du vurdere følgende punkter for sammenføyninger.

Noen punkter å observere i Joins:

  • Kun likestillingssammenføyninger er tillatt i sammenføyninger
  • Mer enn to tabeller kan slås sammen i samme spørring
  • LEFT, RIGHT, FULL OUTER-koblinger eksisterer for å gi mer kontroll over ON-klausulen som det ikke er samsvar for
  • Sammenføyninger er ikke kommutative
  • Sammenføyninger er venstreassosiative uavhengig av om de er VENSTRE eller HØYRE

Ulike typer sammenføyninger

Sammenføyninger er av 4 typer, disse er

  • Indre bli med
  • Venstre ytre Sammenføyning
  • Høyre ytre skjøt
  • Full ytre sammenføyning

Indre sammenføyning:

Postene som er felles for begge tabellene vil bli hentet av denne Inner Join.

Indre sammenføyning

Fra skjermbildet ovenfor kan vi observere følgende

  1. Her utfører vi sammenføyningsspørring ved å bruke JOIN nøkkelord mellom tabellene sample_joins og sample_joins1 med samsvarende betingelse som (c.Id= o.Id).
  2. Utdataene viser vanlige poster tilstede i begge tabellene ved å sjekke tilstanden nevnt i spørringen

Spørsmål:

SELECT c.Id, c.Name, c.Age, o.Amount FROM sample_joins c JOIN sample_joins1 o ON(c.Id=o.Id);

Venstre ytre skjøt:

  • Hive-spørringsspråk LEFT OUTER JOIN returnerer alle radene fra venstre tabell selv om det ikke er noen treff i høyre tabell
  • Hvis ON-klausulen samsvarer med null poster i den høyre tabellen, returnerer joins fortsatt en post i resultatet med NULL i hver kolonne fra den høyre tabellen

Venstre ytre skjøt

Fra skjermbildet ovenfor kan vi observere følgende

  1. Her utfører vi sammenføyningsspørring ved å bruke søkeordet "LEFT OUTER JOIN" mellom tabellene sample_joins og sample_joins1 med samsvarende betingelse som (c.Id= o.Id).For eksempel her bruker vi medarbeider-id som referanse, den sjekker om id er vanlig i høyre og venstre tabellen eller ikke. Det fungerer som matchende tilstand.
  2. Utdata som viser vanlige poster som er tilstede i begge tabellene ved å sjekke betingelsen nevnt i spørringen.NULL-verdier i utdataene ovenfor er kolonner uten verdier fra høyre tabell som er sample_joins1

Spørsmål:

SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c LEFT OUTER JOIN sample_joins1 o ON(c.Id=o.Id)

Høyre ytre skjøt:

  • Hive-spørringsspråk RIGHT OUTER JOIN returnerer alle radene fra høyre tabell selv om det ikke er noen treff i venstre tabell
  • Hvis ON-klausulen samsvarer med null poster i den venstre tabellen, returnerer joins fortsatt en post i resultatet med NULL i hver kolonne fra den venstre tabellen
  • RIGHT joins returnerer alltid poster fra en høyre tabell og samsvarende poster fra venstre tabell. Hvis den venstre tabellen ikke har noen verdier som tilsvarer kolonnen, vil den returnere NULL-verdier på det stedet.

Høyre ytre skjøt

Fra skjermbildet ovenfor kan vi observere følgende

  1. Her utfører vi sammenføyningsspørring ved å bruke nøkkelordet "RIGHT OUTER JOIN" mellom tabellene sample_joins og sample_joins1 med samsvarende betingelse som (c.Id= o.Id).
  2. Utdataene viser vanlige poster tilstede i begge tabellene ved å sjekke tilstanden nevnt i spørringen

Query:

  SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c RIGHT OUTER JOIN sample_joins1 o ON(c.Id=o.Id)

Full ytre skjøt:

Den kombinerer poster for både tabellene sample_joins og sample_joins1 basert på JOIN-betingelsen gitt i spørringen.

Den returnerer alle postene fra begge tabellene og fyller ut NULL-verdier for kolonnene som mangler verdier som samsvarer på hver side.

Full Ytre skjøt

Fra skjermbildet ovenfor kan vi observere følgende:

  1. Her utfører vi sammenføyningsspørring ved å bruke søkeordet «FULL OUTER JOIN» mellom tabellene sample_joins og sample_joins1 med samsvarende betingelse som (c.Id= o.Id).
  2. Utdataene viser alle postene som er tilstede i begge tabellene ved å sjekke tilstanden nevnt i spørringen. Nullverdier i utdata her indikerer de manglende verdiene fra kolonnene i begge tabellene.

Query

SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c FULL OUTER JOIN sample_joins1 o ON(c.Id=o.Id)

Undersøk

En spørring som finnes i en spørring, er kjent som en underspørring. Hovedspørringen vil avhenge av verdiene som returneres av underspørringene.

Undersøk kan klassifiseres i to typer

  • Underspørringer i FROM-klausulen
  • Underspørringer i WHERE-klausulen

Når skal du bruke:

  • For å få en bestemt verdi kombinert fra to kolonneverdier fra forskjellige tabeller
  • En tabells avhengighet av andre tabeller
  • Komparativ kontroll av én kolonneverdier fra andre tabeller

Syntaks:

Subquery in FROM clause
SELECT <column names 1, 2…n>From (SubQuery) <TableName_Main >
Subquery in WHERE clause
SELECT <column names 1, 2…n> From<TableName_Main>WHERE col1 IN (SubQuery);

Eksempel:

SELECT col1 FROM (SELECT a+b AS col1 FROM t1) t2

Her er t1 og t2 tabellnavn. Den fargede er Subquery utført på tabell t1. Her er a og b kolonner som legges til i en underspørring og tilordnes col1. Kol1 er kolonneverdien i hovedtabellen. Denne kolonnen "col1" i underspørringen tilsvarer hovedtabellspørringen i kolonne col1.

Innbygging av egendefinerte skript

Hive gir mulighet for å skrive brukerspesifikke skript for kundens behov. Brukerne kan skrive sine egne kart og redusere skript for kravene. Disse kalles Embedded Custom scripts. Kodelogikken er definert i de tilpassede skriptene, og vi kan bruke det skriptet i ETL-tiden.

Når du skal velge innebygde skript:

  • I klientspesifikke krav må utviklere skrive og distribuere skript i Hive
  • Hvor Hive innebygde funksjoner ikke kommer til å fungere for spesifikke domenekrav

For dette i Hive bruker den TRANSFORM-klausulen til innebygde både kart- og reduseringsskript.

I dette Embedded custom scripts må vi observere følgende punkter

  • Kolonner vil bli transformert til streng og avgrenset av TAB før det gis til brukerskriptet
  • Standard utdata fra brukerskriptet vil bli behandlet som TAB-separerte strengkolonner

Eksempel på innebygd skript,

FROM (
	FROM pv_users
	MAP pv_users.userid, pv_users.date
	USING 'map_script'
	AS dt, uid
	CLUSTER BY dt) map_output

INSERT OVERWRITE TABLE pv_users_reduced
	REDUCE map_output.dt, map_output.uid
	USING 'reduce_script'
	AS date, count;

Fra skriptet ovenfor kan vi observere følgende

Dette er bare eksempelskriptet for å forstå

  • pv_users er brukertabellen som har felt som bruker-id og dato som nevnt i map_script
  • Reduksjonsskript definert på dato og antall pv_users-tabeller