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
Trinn 2) Laste og vise data
Fra skjermbildet ovenfor
- Laster inn data til sample_joins fra Customers.txt
- Viser sample_joins-tabellinnhold
Trinn 3) Oppretting av sample_joins1-tabell og lasting, visning av data
Fra skjermbildet ovenfor kan vi observere følgende
- Oppretting av tabell sample_joins1 med kolonnene Orderid, Date1, Id, Amount
- Laster data til sample_joins1 fra orders.txt
- 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.
Fra skjermbildet ovenfor kan vi observere følgende
- 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).
- 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
Fra skjermbildet ovenfor kan vi observere følgende
- 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.
- 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.
Fra skjermbildet ovenfor kan vi observere følgende
- 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).
- 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.
Fra skjermbildet ovenfor kan vi observere følgende:
- 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).
- 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