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.

Taulukon luominen Hiveen

Yllä olevasta kuvakaappauksesta

  1. Luomme taulukkoa "employees_guru", jossa on 6 sarakearvoa, kuten Id, Nimi, Ikä, Osoite, Palkka, Osasto, joka kuuluu organisaatiossa "guru" oleville työntekijöille.
  2. 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.

Tilaa kyselyllä

Yllä olevasta kuvakaappauksesta voimme havaita seuraavan

  1. 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.
  2. 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.

Ryhmittele kyselyn mukaan

Yllä olevasta kuvakaappauksesta tarkastelemme seuraavaa

  1. Se on kysely, joka suoritetaan "employees_guru"-taulukossa GROUP BY -lauseella, jonka osasto on määritelty GROUP BY -sarakkeen nimellä.
  2. 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ä.

Järjestä

Yllä olevasta kuvakaappauksesta voimme havaita seuraavan:

  1. Se on kysely, joka suorittaa taulukon "employees_guru" ja SORT BY -lausekkeen ja "id" määrittelee SORT BY -sarakkeen nimen. Käytimme avainsanaa DESC.
  2. 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.

Cluster By

Yllä olevasta kuvakaappauksesta saamme seuraavat havainnot:

  1. Se on kysely, joka suorittaa CLUSTER BY -lauseen Id-kentän arvolle. Täällä se saa eräänlaisen id-arvot.
  2. 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

Jakaja

Yllä olevasta kuvakaappauksesta voimme havaita seuraavan

  1. DISTRIBUTE BY Lause toimii “empoloyees_guru”-taulukon tunnuksella
  2. Ulostulossa Id, Name. Takapäässä se menee samaan supistimeen

kysely:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;