Hive-kyselyt: järjestys, ryhmittely, jakelu, Cluster Esimerkkien mukaan
Hive tarjoaa SQL-tyyppisen kyselykielen ETL-tarkoituksiin Hadoop tiedostojärjestelmä.
Hive Query Language (HiveQL) tarjoaa Hiven SQL-tyyppisen ympäristön taulukoiden, tietokantojen ja kyselyiden käsittelemiseen.
Meillä voi olla erityyppisiä lauseita, jotka liittyvät Hiveen erityyppisten tietojen käsittelyn ja kyselyjen suorittamiseksi. Parempi yhteys eri solmuihin ympäristön ulkopuolella. HIVE tarjoaa myös JDBC-yhteyden.
Hive queries tarjoaa seuraavat ominaisuudet:
- Tietojen mallinnus, kuten tietokantojen, taulukoiden jne. luominen.
- ETL-toiminnot, kuten purkaminen, muuntaminen ja tietojen lataaminen taulukoihin
- Liitosten yhdistää erilaisia tietotaulukoita
- Käyttäjäkohtaiset mukautetut komentosarjat koodin helpottamiseksi
- Nopeampi kyselytyökalu Hadoopin päällä
Taulukon luominen Hiveen
Ennen kuin aloitamme tämän opetusohjelman pääaiheemme kanssa, luomme ensin taulukon käyttääksemme sitä viitteenä seuraavaan opetusohjelmaan.
Tässä opetusohjelmassa aiomme luoda taulukon "employees_guru", jossa on 6 saraketta.
Yllä olevasta kuvakaappauksesta
- Luomme taulukkoa "employees_guru", jossa on 6 sarakearvoa, kuten Id, Nimi, Ikä, Osoite, Palkka, Osasto, joka kuuluu organisaatiossa "guru" oleville työntekijöille.
- Tässä vaiheessa lataamme tiedot työntekijät_guru-taulukkoon. Ladattavat tiedot sijoitetaan Employees.txt-tiedostoon
Tilaa tiedustelulla
HiveQL:n ORDER BY -syntaksi on samanlainen kuin ORDER BY:n syntaksi SQL Kieli.
Järjestys on lause, jota käytämme "SELECT"-lauseen kanssa Hive kyselyt, joka auttaa lajittelemaan tietoja. Järjestä lausekkeen mukaan käytä Hive-taulukoiden sarakkeita lajitellaksesi tietyt sarakearvot, jotka on mainittu kohdassa Järjestysperuste. Mitä tahansa sarakkeen nimeä varten määritämme järjestyksen lausekkeen avulla, kysely valitsee ja näyttää tulokset nousevassa tai laskevassa järjestyksessä tietyt sarakearvot.
Jos mainittu järjestys kenttien mukaan on merkkijono, se näyttää tuloksen leksikografisessa järjestyksessä. Takapäässä se on siirrettävä yhteen supistimeen.
Yllä olevasta kuvakaappauksesta voimme havaita seuraavan
- Se on kysely, joka suoritetaan "employees_guru"-taulukossa ORDER BY -lauseella ja osaston ORDER BY -sarakkeen nimellä."Osasto" on merkkijono, joten se näyttää tulokset leksikografisen järjestyksen perusteella.
- Tämä on kyselyn todellinen tulos. Jos tarkkailemme sitä oikein, voimme nähdä, että se saa tuloksia osastosarakkeen perusteella, kuten ADMIN, Finance ja niin edelleen, jotta kysely suoritetaan.
Kysely:
SELECT * FROM employees_guru ORDER BY Department;
Ryhmittele kyselyn mukaan
Ryhmittele lauseen mukaan käytä Hive-taulukoiden sarakkeita ryhmitelläksesi tiettyjä sarakearvoja, jotka on mainittu ryhmän kanssa. Mitä tahansa sarakkeen nimeä varten määrittelemme "groupby"-lauseen, kysely valitsee ja näyttää tulokset ryhmittelemällä tietyt sarakkeen arvot.
Esimerkiksi alla olevassa kuvakaappauksessa se näyttää kussakin osastossa olevien työntekijöiden kokonaismäärän. Täällä meillä on "osasto" ryhmänä arvon mukaan.
Yllä olevasta kuvakaappauksesta tarkastelemme seuraavaa
- Se on kysely, joka suoritetaan "employees_guru"-taulukossa GROUP BY -lauseella, jonka osasto on määritelty GROUP BY -sarakkeen nimellä.
- Tässä näkyvä tulos on osaston nimi, ja työntekijät lasketaan eri osastoihin. Täällä kaikki tietylle osastolle kuuluvat työntekijät ryhmitellään ja näytetään tuloksissa. Tuloksena on siis osaston nimi ja kunkin osaston työntekijöiden kokonaismäärä.
kysely:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Järjestä
Lajittele lausekkeen mukaan suorittaa Hive-taulukoiden sarakkeiden nimissä tulosten lajittelemiseksi. Voimme mainita DESC lajittelujärjestyksen laskevassa järjestyksessä ja mainita ASC lajittelun nousevassa järjestyksessä.
Tässä lajittelussa se lajittelee rivit ennen syöttämistä supistimeen. Lajittele aina saraketyypin mukaan.
Jos saraketyypit ovat esimerkiksi numeerisia, se lajittelee numeeriseen järjestykseen, jos saraketyypit ovat merkkijonoja, se lajittelee leksikografisessa järjestyksessä.
Yllä olevasta kuvakaappauksesta voimme havaita seuraavan:
- Se on kysely, joka suorittaa taulukon "employees_guru" ja SORT BY -lausekkeen ja "id" määrittelee SORT BY -sarakkeen nimen. Käytimme avainsanaa DESC.
- Joten näytettävä tulos on "id":n mukaisessa laskevassa järjestyksessä.
kysely:
SELECT * from employees_guru SORT BY Id DESC;
Cluster By
Cluster Käytetään vaihtoehtona sekä Distribute BY- että Sort BY -lauseille Hive-QL:ssä.
Cluster BY-lausetta käytetään Hiven taulukoissa. Hive käyttää sarakkeita Cluster jakaa rivit supistimen kesken. Cluster BY-sarakkeet menevät useisiin vähennyksiin.
- Se varmistaa useissa vähennyksissä olevien arvojen lajittelujärjestyksen
Esimerkiksi Cluster Lauseella, joka mainitaan taulukon työntekijät_guru-taulukon Id-sarakkeen nimessä. Tätä kyselyä suoritettava tulos antaa tuloksia useille takapään supistimille. Mutta käyttöliittymänä se on vaihtoehtoinen lauseke sekä lajitteluperusteelle että jakelulle.
Tämä on itse asiassa taustaprosessi, kun suoritamme kyselyn lajittelemalla, ryhmittelemällä ja ryhmittelemällä Kartan vähennyskehyksen kannalta. Joten jos haluamme tallentaa tulokset useisiin vähennyksiin, lähdemme mukaan Cluster By.
Yllä olevasta kuvakaappauksesta saamme seuraavat havainnot:
- Se on kysely, joka suorittaa CLUSTER BY -lauseen Id-kentän arvolle. Täällä se saa eräänlaisen id-arvot.
- Se näyttää guru_employees-lajittelussa olevat tunnukset ja nimet
kysely:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Jakaja
Levitä BY-lausetta, jota käytetään Hiven taulukoissa. Hive käyttää Jakaja-kohdan sarakkeita jakaakseen rivit supistajien kesken. Kaikki Distribute BY -sarakkeet menevät samaan supistimeen.
- Se varmistaa, että jokainen N:stä supistimesta saa ei-päällekkäiset kolonnialueet
- Se ei lajittele jokaisen supistimen tehoa
Yllä olevasta kuvakaappauksesta voimme havaita seuraavan
- DISTRIBUTE BY Lause toimii “empoloyees_guru”-taulukon tunnuksella
- Ulostulossa Id, Name. Takapäässä se menee samaan supistimeen
kysely:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;