Pridruživanje košnica & Vodič za SubQuery s primjerima

Sadržaj:

Anonim

U ovom vodiču naučit ćete-

  • Pridružite se upitima
  • Različita vrsta spajanja
  • Podupiti
  • Ugrađivanje prilagođenih skripti
  • UDF-ovi (funkcije koje definira korisnik)

Pridružite se upitima:

Upiti za pridruživanje mogu se izvoditi na dvije tablice prisutne u Hiveu. Da bismo ovdje jasno razumjeli koncepte Pridruživanja, ovdje stvaramo dvije tablice,

  • Sample_joins (povezani s pojedinostima kupaca)
  • Sample_joins1 (vezano uz detalje narudžbi koje su izvršili zaposlenici)

Korak 1) Izrada tablice "sample_joins" s ID-jem imena stupaca, imenom, dobi, adresom i plaćom zaposlenika

Korak 2) Učitavanje i prikaz podataka

Iz gornjeg snimka zaslona

  1. Učitavanje podataka u sample_joins iz Customers.txt
  2. Prikazivanje sadržaja tablice sample_joins

Korak 3) Izrada tablice sample_joins1 i učitavanje, prikaz podataka

Iz gornjeg snimka zaslona možemo uočiti sljedeće

  1. Stvaranje tablice sample_joins1 sa stupcima Redoslijed, Datum1, Id, Količina
  2. Učitavanje podataka u sample_joins1 iz orders.txt
  3. Prikazivanje zapisa prisutnih u sample_joins1

Krećući se prema naprijed vidjet ćemo različite vrste pridruživanja koja se mogu izvoditi na tablicama koje smo stvorili, ali prije toga morate uzeti u obzir sljedeće točke za pridruživanja.

Neke točke na koje treba obratiti pažnju u Joins:

  • U pridruživanjima su dopuštena samo pridruživanja ravnopravnosti
  • U isti upit može se spojiti više od dvije tablice
  • LIJEVO, DESNO, PUNO VANJSKO spajanje postoji kako bi se pružila veća kontrola nad ON klauzulom za koju ne postoji podudaranje
  • Pridruživanja nisu komutativna
  • Pridruživanja su asocijacija lijevo, bez obzira jesu li LIJEVA ili DESNA pridruživanja

Različita vrsta spajanja

Pridruživanja su 4 vrste, to su

  • Unutarnji spoj
  • Lijevo vanjsko Pridružite se
  • Desno vanjsko pridruživanje
  • Potpuno vanjsko pridruživanje

Unutarnje pridruživanje:

Zapisi zajednički za obje tablice dohvatit će se ovim Unutarnjim pridruživanjem.

Iz gornjeg snimka zaslona možemo uočiti sljedeće

  1. Ovdje izvodimo upit za pridruživanje pomoću ključne riječi JOIN između tablica sample_joins i sample_joins1 s podudarnim uvjetom kao (c.Id = o.Id).
  2. Izlaz koji prikazuje uobičajene zapise prisutne u obje tablice provjerom stanja spomenutog u upitu

Upit:

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

Lijevo vanjsko pridruživanje:

  • Jezik upita za košnice LIJEVO VANJSKO PRIDRUŽAVANJE vraća sve retke iz lijeve tablice iako u desnoj tablici nema podudaranja
  • Ako se klauzula ON podudara s nula zapisa u desnoj tablici, pridruživanja i dalje vraćaju rezultat u rezultatu s NULL u svakom stupcu iz desne tablice

Iz gornjeg snimka zaslona možemo uočiti sljedeće

  1. Ovdje izvodimo upit za pridruživanje pomoću ključne riječi "LEFT OUTER JOIN" između tablica sample_joins i sample_joins1 s podudarnim uvjetom kao (c.Id = o.Id).

    Na primjer, ovdje koristimo id zaposlenika kao referencu, on provjerava je li id ​​uobičajen u desnoj, kao i u lijevoj tablici ili ne. Djeluje kao podudarni uvjet.

  2. Izlaz koji prikazuje uobičajene zapise prisutne u obje tablice provjerom stanja spomenutog u upitu.

    NULL vrijednosti u gornjem izlazu su stupci bez vrijednosti iz desne tablice koja je sample_joins1

Upit:

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

Desno vanjsko pridruživanje:

  • Jezik upita za košnice RIGHT OUTER JOIN vraća sve retke iz desne tablice iako u lijevoj tablici nema podudaranja
  • Ako se klauzula ON podudara s nula zapisa u lijevoj tablici, pridruživanja i dalje vraćaju rezultat u rezultatu s NULL u svakom stupcu s lijeve tablice
  • DESNA pridruživanja uvijek vraćaju zapise iz desne tablice i odgovarajuće zapise iz lijeve tablice. Ako lijeva tablica nema vrijednosti koje odgovaraju stupcu, vratit će NULL vrijednosti na tom mjestu.

Iz gornjeg snimka zaslona možemo uočiti sljedeće

  1. Ovdje izvodimo upit za pridruživanje pomoću ključne riječi "RIGHT OUTER JOIN" između tablica sample_joins i sample_joins1 s podudarnim uvjetom kao (c.Id = o.Id).
  2. Izlaz koji prikazuje uobičajene zapise prisutne u obje tablice provjerom stanja spomenutog u upitu

Upit :

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

Potpuno vanjsko spajanje:

Kombinira zapise i tablica sample_joins i sample_joins1 na temelju UJEDINJENOG uvjeta datog u upitu.

Vraća sve zapise iz obje tablice i popunjava NULL vrijednosti za stupce koji nedostaju vrijednosti koje se podudaraju s obje strane.

Iz gornjeg snimka zaslona možemo uočiti sljedeće:

  1. Ovdje izvodimo upit za pridruživanje pomoću ključne riječi "FULL OUTER JOIN" između tablica sample_joins i sample_joins1 s podudarnim uvjetom kao (c.Id = o.Id).
  2. Izlaz koji prikazuje sve zapise prisutne u obje tablice provjerom stanja spomenutog u upitu. Nulove vrijednosti u izlazu ovdje označavaju vrijednosti koje nedostaju iz stupaca obje tablice.

Upit

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

Potupiti:

Upit prisutan unutar upita poznat je kao podupit. Glavni upit ovisit će o vrijednostima koje su vratili podupiti.

Podupiti se mogu klasificirati u dvije vrste

  • Potupiti u klauzuli FROM
  • Potupiti u klauzuli WHERE

Kada koristiti:

  • Da biste dobili određenu vrijednost kombiniranu iz dviju vrijednosti stupaca iz različitih tablica
  • Ovisnost vrijednosti jedne tablice o drugim tablicama
  • Usporedna provjera vrijednosti jednog stupca iz drugih tablica

Sintaksa:

Subquery in FROM clauseSELECT From (SubQuery) Subquery in WHERE clauseSELECT  FromWHERE col1 IN (SubQuery);

Primjer:

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

Ovdje su t1 i t2 nazivi tablica. Obojeni je Podupit izveden na tablici t1. Ovdje su a i b stupci koji se dodaju u podupit i dodjeljuju col1. Col1 je vrijednost stupca prisutna u glavnoj tablici. Ovaj stupac "col1" prisutan u podupitu jednak je upitu glavne tablice u stupcu col1.

Ugrađivanje prilagođenih skripti:

Hive pruža mogućnost pisanja korisničkih skripti za potrebe klijenta. Korisnici mogu napisati vlastitu kartu i smanjiti skripte za zahtjeve. Oni se nazivaju ugrađenim prilagođenim skriptama. Logika kodiranja definirana je u prilagođenim skriptama i tu skriptu možemo koristiti u ETL vremenu.

Kada odabrati ugrađene skripte:

  • U specifičnim zahtjevima klijenta programeri moraju pisati i postavljati skripte u Hive
  • Gdje ugrađene funkcije Hive-a neće raditi za određene zahtjeve domene

Za to u Hiveu koristi klauzulu TRANSFORM za ugrađivanje skripti mape i reduktora.

U ovom ugrađenom prilagođenom skriptu moramo uzeti u obzir sljedeće točke

  • Stupci će se pretvoriti u niz i razgraničiti TAB-om prije davanja korisničkoj skripti
  • Standardni izlaz korisničke skripte tretirat će se kao stupci niza odvojeni TAB-om

Uzorak ugrađene skripte,

FROM (FROM pv_usersMAP pv_users.userid, pv_users.dateUSING 'map_script'AS dt, uidCLUSTER BY dt) map_outputINSERT OVERWRITE TABLE pv_users_reducedREDUCE map_output.dt, map_output.uidUSING 'reduce_script'AS date, count;

Iz gornje skripte možemo uočiti sljedeće

Ovo je samo primjer skripte za razumijevanje

  • pv_users je korisnička tablica koja sadrži polja poput korisničkog imena i datuma kako je spomenuto u map_script
  • Skripta reduktora definirana na datum i broj tablica pv_users