Hive tarjoaa SQL-tyyppisen kyselykielen ETL-tarkoitukseen Hadoop-tiedostojärjestelmän päällä.
Hive Query -kieli (HiveQL) tarjoaa Hiveen SQL-tyyppisen ympäristön taulukkojen, tietokantojen, kyselyjen kanssa työskentelyyn.
Hiveen voi liittyä erityyppisiä lausekkeita erityyppisten tietojen käsittelyjen ja kyselyjen suorittamiseksi. Parempi liitettävyys ympäristön eri solmujen kanssa. HIVE tarjoaa myös JDBC-yhteyden.
Hive-kyselyt tarjoavat seuraavat ominaisuudet:
- Tietomallinnus, kuten tietokantojen, taulukoiden jne. Luominen
- ETL-toiminnot, kuten purkaminen, muuntaminen ja tietojen lataaminen taulukoihin
- Liittyy yhdistämään eri tietotaulukot
- Käyttäjäkohtaiset mukautetut komentosarjat koodin helpottamiseksi
- Nopeampi kyselytyökalu Hadoopin päällä
Tässä artikkelissa opit-
- Järjestä kyselyn mukaan
- Ryhmittele kyselyn mukaan
- Järjestä
- Cluster By
- Jakelija
Luodaan taulukko pesässä
Ennen kuin aloitamme tämän opetusohjelman pääaiheemme kanssa, luomme ensin taulukon, jota käytetään viitteinä seuraavaan opetusohjelmaan.
Tässä tässä opetusohjelmassa aiomme luoda taulukon "työntekijät_guru", jossa on 6 saraketta.
Yllä olevasta kuvakaappauksesta
- Luomme taulukon "työntekijät_guru", jossa on 6 sarakearvoa, kuten tunnus, nimi, ikä, osoite, palkka, osasto, joka kuuluu organisaatiossa "guru" oleville työntekijöille.
- Tässä tässä vaiheessa lataamme tietoja työntekijät_guru-taulukkoon. Tiedot, jotka aiomme ladata, sijoitetaan Employees.txt-tiedostoon
Järjestä kyselyn mukaan:
ORDER BY -syntaksi HiveQL: ssä on samanlainen kuin ORDER BY -syntaksi SQL-kielellä.Järjestysperuste on lauseke, jota käytämme "SELECT" -lausekkeen kanssa Hive-kyselyissä, mikä auttaa tietojen lajittelussa. Järjestä lausekkeen mukaan käytä Hive-taulukoissa olevia sarakkeita lajitellaksesi tiettyjä sarakearvoja, jotka mainitaan Järjestä. Minkä tahansa sarakkeen nimen kohdalla määritämme järjestyksen lausekkeella, kysely valitsee ja näyttää tulokset nousevassa tai laskevassa järjestyksessä tietyt sarakearvot.
Jos mainittu järjestys kentän mukaan on merkkijono, se näyttää tuloksen leksikografisessa järjestyksessä. Takapäässä se on siirrettävä yhdelle vähennysventtiilille.
Yllä olevasta näyttökuvasta voimme havaita seuraavaa
- Se on kysely, joka suoritetaan "työntekijät_guru" -taulukossa ORDER BY -lausekkeen kanssa osaston kanssa määritetyllä ORDER BY -sarakkeen nimellä.
"Osasto" on merkkijono, joten se näyttää leksikografiseen järjestykseen perustuvat tulokset.
- Tämä on kyselyn todellinen tulos. Jos tarkkailemme sitä oikein, voimme nähdä, että tulokset näytetään osastosarakkeen, kuten ADMIN, Finance ja niin edelleen, perusteella orderQuery suoritettavana.
Kysely:
SELECT * FROM employees_guru ORDER BY Department;
Ryhmittele kyselyn mukaan:
Ryhmittele lausekkeen mukaan käyttämällä Hive-taulukoiden sarakkeita ryhmittelemään tietyt sarakearvot, jotka ryhmän kanssa on mainittu. Mille tahansa sarakkeen nimelle määritämme "groupby" -lausekkeen, kysely valitsee ja näyttää tulokset ryhmittelemällä tietyt sarakearvot.
Esimerkiksi alla olevassa kuvakaappauksessa se näyttää kunkin osaston työntekijöiden kokonaismäärän. Tässä meillä on "osasto" ryhmänä arvon mukaan.
Yllä olevasta kuvakaappauksesta huomaamme seuraavat
- Kysely suoritetaan "työntekijät_guru" -taulukossa GROUP BY -lausekkeella, jonka osasto on määritelty GROUP BY -sarakkeen nimellä.
- Tässä näkyvä tulos on osaston nimi, ja työntekijät laskevat eri osastoille. Tässä kaikki tietyn osaston työntekijät ryhmitellään ja näytetään tuloksissa. Joten tulos on osaston nimi, ja jokaisessa osastossa on läsnä koko henkilöstö.
Kysely:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Järjestä:
Lajittelu lauseen mukaan suorittaa Hive-taulukoiden sarakkeiden nimet lajittelemaan tuotoksen. Voimme mainita DESC: n järjestyksen järjestyksessä laskevassa järjestyksessä ja mainita ASC: n lajittelun nousevassa järjestyksessä.
Tässä lajittelussa se lajittelee rivit ennen syöttöä vähennysventtiiliin. Lajittele aina saraketyypin mukaan.
Esimerkiksi, jos saraketyypit ovat numeerisia, se lajitellaan numerojärjestyksessä, jos saraketyypit ovat merkkijonoja, se lajitellaan leksikografisessa järjestyksessä.
Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:
- Se on kysely, joka esiintyy taulukossa "työntekijät_guru" SORT BY -lausekkeen kanssa "id" määritellä SORT BY -sarakkeen nimi. Käytimme avainsanaa DESC.
- Näytetty tulos on siis laskevassa järjestyksessä "id".
Kysely:
SELECT * from employees_guru SORT BY Id DESC;
Klusteri:
Klusteri Käytetään vaihtoehtona sekä Hive-QL: n Distribute BY- että Sort BY -lausekkeille.
Cluster BY -lauseke, jota käytetään Hivessä olevissa taulukoissa. Hive käyttää Clusterin sarakkeita jakamalla rivit vähennysventtiilien kesken. Cluster BY -sarakkeet menevät useisiin vähennysventtiileihin.
- Se varmistaa useissa vähennysventtiilissä olevien arvojen järjestyksen
Esimerkiksi Cluster By -lauseke, joka mainitaan taulukon työntekijät_guru-taulukon Id-sarakkeessa. Tämän kyselyn suorittaminen antaa tuloksen useille takapään reduktoreille. Mutta etupäänä se on vaihtoehtoinen lauseke sekä lajitteluperusteelle että jakelujärjestykselle.
Tämä on itse asiassa taustaprosessi, kun suoritamme kyselyn lajittelun mukaan, ryhmittelyn ja ryhmittelyn mukaan Kartan vähennyskehyksessä. Joten jos haluamme tallentaa tulokset useisiin vähennysventtiileihin, menemme Cluster By: n kanssa.
Yllä olevasta kuvakaappauksesta saamme seuraavat havainnot:
- Kysely suorittaa CLUSTER BY -lausekkeen Id-kentän arvoon. Täällä se saa eräänlaisen Id-arvot.
- Se näyttää tunnukset ja nimet, jotka ovat guru_employees -järjestyksessä
Kysely:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Levitä:
Levitä BY-lauseke, jota käytetään Hiveen pöydissä. Hive käyttää jakamisen sarakkeita jakamaan rivit vähennysventtiilien kesken. Kaikki Distribute BY -sarakkeet menevät samaan vähennysventtiiliin.
- Se varmistaa, että jokainen N pelkistimestä saa päällekkäiset sarakealueet
- Se ei lajittele kunkin vähennysventtiilin lähtöä
Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa
- JAKELU Lauseke, joka esiintyy taulukon "empoloyees_guru" tunnuksessa
- Lähdössä näkyy tunnus, nimi. Takapäässä se menee samaan vähennysventtiiliin
Kysely:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;