Tässä opetusohjelmassa opit-
- Liity kyselyihin
- Erilaiset liitokset
- Alakyselyt
- Mukautettujen komentosarjojen upottaminen
- UDF: t (käyttäjän määrittelemät toiminnot)
Liity kyselyihin:
Liityskyselyt voidaan suorittaa kahdessa Hive-pöydässä. Liittymiskäsitteiden ymmärtämiseksi tässä selkeästi luomme kaksi taulukkoa,
- Sample_joins (liittyy asiakkaiden tietoihin)
- Sample_joins1 (liittyy työntekijöiden tekemiin tilaustietoihin)
Vaihe 1) Luodaan taulukko "sample_joins", jossa on sarakkeiden nimet ID, nimi, ikä, osoite ja työntekijöiden palkka
Vaihe 2) Tietojen lataaminen ja näyttäminen
Yllä olevasta kuvakaappauksesta
- Ladataan tietoja sample_joins -palveluun osoitteesta Customers.txt
- Näytetään_joins taulukon sisältö
Vaihe 3) Luo esimerkki_joins1-taulukko ja lataa, näyttää tiedot
Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa
- Taulukon sample_joins1 luominen sarakkeilla Orderid, Date1, Id, Amount
- Ladataan tietoja sample_joins1 -sivulle tilauksista.txt
- Näytteen_liittymät1 tietueiden näyttäminen
Edetessä näemme erityyppisiä liittymiä, jotka voidaan suorittaa luomillemme pöydille, mutta ennen sitä sinun on harkittava seuraavia liittymispisteitä.
Joitakin huomioitavia asioita liittymisissä:
- Vain tasa-arvoiset liittymät ovat sallittuja liittymisissä
- Useampi kuin kaksi taulukkoa voidaan liittää samaan kyselyyn
- VASEN, OIKEA, TÄYDELLINEN liittyminen on olemassa, jotta ON-lauseketta voidaan hallita paremmin
- Liittymät eivät ole kommutatiivisia
- Liittymät ovat vasemmalle assosiatiivisia riippumatta siitä, ovatko ne VASEN tai OIKEA liitoksia
Erilaiset liitokset
Liitokset ovat 4 tyyppiä, nämä ovat
- Sisäinen liitos
- Vasen ulompi liitos
- Oikea ulompi liitos
- Täysi ulkoinen liittyminen
Sisäinen liittyminen:
Tämä sisäinen liittymä noutaa molemmille taulukoille yhteiset tietueet.
Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa
- Tässä suoritamme liittymiskyselyn käyttämällä JOIN-avainsanaa taulukoiden sample_joins ja sample_joins1 välissä, kun hakuehto on (c.Id = o.Id).
- Lähtö, joka näyttää yhteiset tietueet, esiintyy molemmissa taulukoissa tarkistamalla kyselyssä mainittu ehto
Kysely:
SELECT c.Id, c.Name, c.Age, o.Amount FROM sample_joins c JOIN sample_joins1 o ON(c.Id=o.Id);
Vasen ulompi liitos:
- Hive-kyselykieli LEFT OUTER JOIN palauttaa kaikki rivit vasemmasta taulukosta, vaikka oikeassa taulukossa ei olisikaan vastaavuuksia
- Jos ON-lauseke vastaa nolla tietueita oikeassa taulukossa, liittymät palauttavat silti tuloksen tietueen, jossa NULL on oikean taulukon jokaisessa sarakkeessa.
Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa
- Tässä suoritamme liittymiskyselyn käyttämällä "VASEMMALLE JOIN" -avainsanaa taulukkojen sample_joins ja sample_joins1 välissä.
Esimerkiksi tässä käytämme työntekijän tunnusta viitteenä, se tarkistaa, onko tunnus yleinen sekä oikealla että vasemmalla pöydällä. Se toimii yhteensopivana ehtona.
- Lähtö, joka näyttää yhteiset tietueet, esiintyy molemmissa taulukoissa tarkistamalla kyselyssä mainittu ehto.
NULL-arvot yllä olevassa tuotoksessa ovat sarakkeita, joissa ei ole arvoja Oikeataulukosta, joka on sample_joins1
Kysely:
SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c LEFT OUTER JOIN sample_joins1 o ON(c.Id=o.Id)
Oikea ulompi liitos:
- Hive-kyselykieli RIGHT OUTER JOIN palauttaa oikean taulukon kaikki rivit, vaikka vasemmassa taulukossa ei olisikaan vastaavuuksia
- Jos ON-lauseke vastaa nolla tietuetta vasemmassa taulukossa, liittymät palauttavat silti tuloksen tietueen, jossa NULL on vasemman taulukon jokaisessa sarakkeessa
- RIGHT-liitokset palauttavat aina tietueet Oikea-taulukosta ja vastaavat tietueet vasemmasta taulukosta. Jos vasemmalla taulukolla ei ole saraketta vastaavia arvoja, se palauttaa NULL-arvot kyseiseen paikkaan.
Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa
- Tässä suoritamme liittymiskyselyn käyttämällä "OIKEA ULKOLIITTYMINEN" -hakusanaa taulukoiden sample_joins ja sample_joins1 välissä, joiden ehtona on (c.Id = o.Id).
- Lähtö, joka näyttää yhteiset tietueet, esiintyy molemmissa taulukoissa tarkistamalla kyselyssä mainittu ehto
Kysely :
SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c RIGHT OUTER JOIN sample_joins1 o ON(c.Id=o.Id)
Täysi ulompi liitos:
Se yhdistää sekä taulukoiden sample_joins että sample_joins1 tietueet kyselyssä annetun JOIN-ehdon perusteella.
Se palauttaa kaikki molempien taulukoiden tietueet ja täyttää NULL-arvot sarakkeille, joista puuttuu molemmille puolille sopivat arvot.
Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:
- Tässä suoritamme liittymiskyselyn käyttämällä "FULL OUTER JOIN" avainsanaa taulukoiden sample_joins ja sample_joins1 välissä, joiden ehtona on (c.Id = o.Id).
- Lähtö, joka näyttää kaikki molemmissa taulukoissa olevat tietueet tarkistamalla kyselyssä mainitun ehdon. Tuloksen tyhjät arvot osoittavat puuttuvat arvot molempien taulukoiden sarakkeista.
Kysely
SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c FULL OUTER JOIN sample_joins1 o ON(c.Id=o.Id)
Alakyselyt:
Kyselyssä oleva kysely tunnetaan alakyselynä. Pääkysely riippuu alakyselyjen palauttamista arvoista.
Alakyselyt voidaan luokitella kahteen tyyppiin
- Alakyselyt FROM-lauseessa
- Alakyselyt WHERE-lausekkeessa
Milloin käyttää:
- Saadaksesi tietyn arvon yhdistettynä kahdesta sarakearvosta eri taulukoista
- Yhden taulukon arvojen riippuvuus muista taulukoista
- Yhden sarakearvon vertaileva tarkistus muista taulukoista
Syntaksi:
Subquery in FROM clauseSELECTFrom (SubQuery) Subquery in WHERE clauseSELECT From WHERE col1 IN (SubQuery);
Esimerkki:
SELECT col1 FROM (SELECT a+b AS col1 FROM t1) t2
Tässä t1 ja t2 ovat taulukon nimiä. Värillinen on Subquery suoritetaan taulukossa t1. Tässä a ja b ovat sarakkeita, jotka lisätään alakyselyyn ja osoitetaan col1: lle. Sarake1 on päätaulukon sarakearvo. Tämä alakyselyssä oleva sarake "col1" vastaa sarakkeessa col1 olevaa päätaulukyselyä.
Mukautettujen komentosarjojen upottaminen:
Hive tarjoaa mahdollisuuden kirjoittaa käyttäjäkohtaisia komentosarjoja asiakkaan vaatimuksia varten. Käyttäjät voivat kirjoittaa oman kartan ja vähentää komentosarjoja vaatimuksiin. Näitä kutsutaan upotetuiksi mukautetuiksi komentosarjoiksi. Koodauslogiikka on määritelty mukautetuissa komentosarjoissa, ja voimme käyttää sitä komentoajalla ETL-aikaan.
Milloin valita upotetut komentosarjat:
- Asiakaskohtaisissa vaatimuksissa kehittäjien on kirjoitettava ja asennettava komentosarjoja Hiveen
- Hiveen sisäänrakennetut toiminnot eivät toimi tietyille verkkotunnusvaatimuksille
Tätä varten Hivessä se käyttää TRANSFORM-lauseketta sekä kartta- että vähennyskomentosarjojen upottamiseen.
Tässä upotetussa mukautetussa skriptissä meidän on noudatettava seuraavia kohtia
- Sarakkeet muutetaan merkkijonoksi ja TAB rajaa ne ennen niiden antamista käyttäjän komentosarjalle
- Käyttäjäkoodin vakiotulosteita käsitellään sarkaimilla erotetuilla merkkijonosarakkeilla
Upotetun skriptin näyte,
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;
Edellä olevasta käsikirjoituksesta voimme havaita seuraavaa
Tämä on vain esimerkki käsikirjoituksesta ymmärtämistä varten
- pv_users on käyttäjien taulukko, jolla on kentät, kuten userid ja date, kuten map_script mainitaan
- Reducer-komentosarja määritetty pv_users-taulukoiden päivämäärällä ja lukumäärällä