Hive pakub Hadoop-failisüsteemi peal ETL-i jaoks SQL-tüüpi päringukeelt.
Hive Query keel (HiveQL) pakub Hive'is SQL-tüüpi keskkonda tabelite, andmebaaside ja päringutega töötamiseks.
Hive'iga võib meil olla erinevat tüüpi klausleid, et teha erinevat tüüpi andmetöötlusi ja päringuid. Parema ühenduvuse tagamiseks väljaspool keskkonda asuvate erinevate sõlmedega. HIVE pakub ka JDBC-ühenduvust.
Tarupäringud pakuvad järgmisi funktsioone:
- Andmete modelleerimine, näiteks andmebaaside, tabelite loomine jne.
- ETL-i funktsioonid, nagu ekstraktimine, teisendamine ja andmete tabelitesse laadimine
- Liitub erinevate andmetabelite ühendamiseks
- Kasutaja spetsiifilised kohandatud skriptid koodi hõlbustamiseks
- Kiirem päringutööriist Hadoopi peal
Selles artiklis saate teada
- Järjekord päringu järgi
- Grupeerige päringu järgi
- Sorteerima
- Klaster Autor
- Levitamine:
Tarus tabeli loomine
Enne selle õpetuse põhiteemaga alustamist loome kõigepealt tabeli, et seda kasutada järgmise juhendaja viitena.
Siin selles õpetuses loome 6 veeruga tabeli "töötajate_guru".
Ülaltoodud ekraanipildilt
- Loome tabeli "töötajate_guru", millel on 6 veeru väärtust, näiteks Id, Nimi, Vanus, Aadress, Palk, Osakond, mis kuulub organisatsiooni "guru" töötajatele.
- Siinkohal laadime selles etapis andmeid töötaja_guru tabelisse. Laaditavad andmed paigutatakse faili Employees.txt
Järjesta päringu järgi:
HiveQL-i süntaks ORDER BY sarnaneb SQL-i ORDER BY-i süntaksiga.Järjekord on klausel, mida kasutame taru päringutes lause "SELECT" abil, mis aitab andmeid sortida. Järjestus klauslite kaupa kasutab Hive'i tabelites olevaid veerge, et sortida konkreetseid veeruväärtusi, mida on nimetatud järjestusega. Ükskõik millise veeru nime jaoks me järjestust klausliga määratleme, valib ja kuvab päring tulemused veeru väärtuste kasvavas või kahanevas järjestuses.
Kui mainitud järjestus väljade kaupa on string, kuvab see tulemuse leksikograafilises järjekorras. Tagumises otsas tuleb see edasi anda ühele reduktorile.
Ülaltoodud ekraanipildilt võime jälgida järgmist
- See on päring, mille täidab tabelis "töötajate_guru" klausel ORDER BY, mille osakond on määratletud veeru ORDER BY järgi.
"Osakond" on string, nii et see kuvab tulemusi leksikograafilises järjekorras.
- See on päringu tegelik väljund. Kui me seda korralikult jälgime, näeme, et tulemused kuvatakse osakonna veeru (nt ADMIN, Finants jne) põhjal selleks, et teostada orderQuery.
Päring:
SELECT * FROM employees_guru ORDER BY Department;
Grupeerige päringu alusel:
Rühmitage klausli järgi Hive'i tabelites olevate veergude abil rühmade kaupa nimetatud veergude väärtuste rühmitamiseks Ükskõik millise veeru nime jaoks määratleme "groupby" klausli, valib ja kuvab päring tulemused, rühmitades konkreetsed veeru väärtused.
Näiteks kuvatakse alloleval ekraanipildil igas osakonnas viibivate töötajate koguarv. Siin on väärtuse järgi grupp "Osakond".
Ülaltoodud ekraanipildilt jälgime järgmist
- See on päring, mis täidetakse tabelis "töötajate_guru" koos klausliga GROUP BY, mille osakond on määratud veeru grupi järgi.
- Siin kuvatav väljund on osakonna nimi ja töötajad loevad erinevates osakondades. Siin grupeeritakse kõik töötajad, kes kuuluvad konkreetsesse osakonda, ja kuvatakse tulemustes. Seega on tulemuseks osakonna nimi koos igas osakonnas olevate töötajate koguarvuga.
Päring:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Sorteerima:
Sordi järgi sortimine toimib Hive'i tabelite veerunimedel väljundi sortimiseks. Võime mainida järjestust kahanevas järjestuses sortimiseks DESC ja sortimise kasvavas järjekorras ASC-d.
Selles järjestuses sorteerib ta read enne reduktorisse söötmist. Alati sortimine toimub veeru tüüpide järgi.
Näiteks kui veerutüübid on numbrilised, sorteeritakse need järjestuses numbrite järjekorras, kui veerutüübid on stringid, sorteeritakse need leksikograafilises järjekorras.
Ülaltoodud ekraanipildilt võime jälgida järgmist:
- See on päring, mille täitmine tabelis "töötajate_guru" koos SORT BY klausliga "id" määratleb veeru SORT BY. Kasutasime märksõna DESC.
- Seega kuvatakse väljund kahanevas järjekorras "id".
Päring:
SELECT * from employees_guru SORT BY Id DESC;
Klastri autor:
Klaster Kasutatakse alternatiivina Hive-QL-i klauslitele Distribute BY ja Sort BY.
Klastri BY klausel, mida kasutatakse tarus olevate tabelite jaoks Hive kasutab klastri veerge, jaotades read reduktorite vahel. Cluster BY veerud lähevad mitmesse reduktorisse.
- See tagab mitmes reduktoris olevate väärtuste järjestuse sortimise
Näiteks Cluster By klausel, mida mainitakse tabeli töötajate_guru veeru Id veerus. Selle päringu täitmisel saadud väljund annab tulemusi mitmele reduktorile tagaosas. Kuid kasutajaliidesena on see alternatiivne klausel nii sortimise kui ka levitamise jaoks.
See on tegelikult lõppprotsess, kui teostame päringu sortimise, grupeerimise ja klastri järgi, kasutades Map Reduction raamistikku. Nii et kui tahame tulemusi salvestada mitmesse reduktorisse, läheme koos Cluster By-ga.
Ülaltoodud ekraanipildilt saame järgmised tähelepanekud:
- See on päring, mis täidab väli Id väärtuse klausli CLUSTER BY. Siin saab omamoodi Id-väärtused.
- See kuvab ID-d ja nimed, mis on järjestatud guru_employees
Päring:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Levitaja:
Levitage BY-klauslit, mida kasutatakse tarus olevates tabelites. Hive kasutab jaotiste Levitamine veerge ridade jaotamiseks reduktorite vahel. Kõik jaotuse BY veerud lähevad samasse reduktorisse.
- See tagab, et kõik N reduktorit saavad veeru vahemikke, mis ei kattu
- See ei sorteeri iga reduktori väljundit
Ülaltoodud ekraanipildilt võime jälgida järgmist
- JAGAMINE Punkti järgi, mis täidetakse tabeli "empoloyees_guru" ID-l
- Väljundil kuvatakse ID, nimi. Tagumises otsas läheb see samale reduktorile
Päring:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;