Hive lekérdezések: Rendezés, Csoportosítás, Elosztás, Cluster Példák alapján

A Hive ezen felül SQL típusú lekérdezési nyelvet biztosít az ETL célra Hadoop fájlrendszer.

A Hive Query Language (HiveQL) SQL típusú környezetet biztosít a Hive-ben a táblák, adatbázisok és lekérdezések kezeléséhez.

Különböző típusú záradékok társíthatók a Hive-hez, hogy különböző típusú adatkezeléseket és lekérdezéseket hajtsunk végre. A környezeten kívüli különböző csomópontokkal való jobb kapcsolat érdekében. A HIVE JDBC-kapcsolatot is biztosít.

A Hive lekérdezések a következő szolgáltatásokat nyújtják:

  • Adatmodellezés, mint például adatbázisok, táblák létrehozása stb.
  • ETL funkciók, mint például a kivonás, az átalakítás és az adatok táblákba való betöltése
  • csatlakozik különböző adattáblázatok összevonására
  • Felhasználóspecifikus egyéni szkriptek a kódolás megkönnyítése érdekében
  • Gyorsabb lekérdező eszköz a Hadoop tetején

Táblázat létrehozása a Hive-ben

Mielőtt elkezdené ennek az oktatóanyagnak a fő témáját, először létrehozunk egy táblázatot, amely hivatkozásként használható a következő oktatóanyaghoz.

Ebben az oktatóanyagban létrehozzuk az „employees_guru” táblát 6 oszloppal.

Táblázat létrehozása a Hive-ben

A fenti képernyőképből

  1. Létrehozzuk az „employees_guru” táblát 6 oszlopértékkel, mint például az azonosító, név, életkor, cím, fizetés, osztály, amely a „guru” szervezetben jelen lévő alkalmazottakhoz tartozik.
  2. Ebben a lépésben adatokat töltünk be a staff_guru táblába. A betöltendő adatok az Employees.txt fájlba kerülnek

Rendelés lekérdezés szerint

A HiveQL ORDER BY szintaxisa hasonló az ORDER BY szintaxisához SQL nyelv.

Rendezés szerint az a záradék, amelyet a „SELECT” utasítással használunk Hive lekérdezések, amely segít az adatok rendezésében. Rendezés záradék szerint használja a Hive-táblázatok oszlopait a Rendezési szempontnál említett oszlopértékek rendezéséhez. Bármilyen oszlopnév esetén is a záradékkal határozzuk meg a sorrendet, a lekérdezés az adott oszlopértékeket növekvő vagy csökkenő sorrendben választja ki és jeleníti meg.

Ha az említett mező szerinti sorrend egy karakterlánc, akkor az eredményt lexikográfiai sorrendben jeleníti meg. A hátsó végén egyetlen reduktorba kell továbbítani.

Rendelés lekérdezés szerint

A fenti képernyőképből a következőket figyelhetjük meg

  1. Ez az a lekérdezés, amely az „employees_guru” táblán az ORDER BY záradékkal és az ORDER BY oszlopnévvel definiált részleggel végrehajtott lekérdezés a String, így a lexikográfiai sorrend alapján jeleníti meg az eredményeket.
  2. Ez a lekérdezés tényleges kimenete. Ha megfelelően megfigyeljük, láthatjuk, hogy a részleg oszlopok alapján megjelenített eredményeket kap, például ADMIN, Pénzügy és így tovább, a végrehajtandó lekérdezés érdekében.

Lekérdezés :

SELECT * FROM employees_guru ORDER BY Department;

Csoportosítás lekérdezés szerint

Csoportosítás záradék szerint használja a Hive-táblázatok oszlopait a csoporttal együtt említett oszlopértékek csoportosítására. Bármilyen oszlopnévhez is definiálunk egy „groupby” záradékot, a lekérdezés kiválasztja és megjeleníti az eredményeket az adott oszlopértékek csoportosításával.

Például az alábbi képernyőképen az egyes részlegeken jelen lévő alkalmazottak teljes számát jeleníti meg. Itt az „Osztály” csoport érték szerinti csoport.

Csoportosítás lekérdezés szerint

A fenti képernyőképből a következőket figyeljük meg

  1. Ez az a lekérdezés, amelyet az „employees_guru” táblán hajtanak végre a GROUP BY záradékkal és a GROUP BY oszlopnévvel rendelkező részleggel.
  2. Az itt megjelenő kimenet a részleg neve, és az alkalmazottak különböző részlegekben számolnak. Itt az adott részleghez tartozó összes alkalmazott csoportosítva jelenik meg az eredményekben. Így az eredmény a részleg neve az egyes részlegekben jelen lévő alkalmazottak teljes számával.

Keresés:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Sorrend

A záradék szerinti rendezés a Hive-táblázatok oszlopnevére vonatkozik a kimenet rendezéséhez. Megemlíthetjük a DESC-t a sorrend csökkenő sorrendbe rendezésére, az ASC-t pedig a rendezés növekvő sorrendjére.

Ebben a rendezésben rendezi a sorokat, mielőtt betáplálja a reduktorba. A rendezés mindig oszloptípustól függ.

Például, ha az oszloptípusok numerikusak, akkor numerikus sorrendben rendezi, ha az oszloptípusok karakterláncok, akkor lexikográfiai sorrendben.

Sorrend

A fenti képernyőképből a következőket figyelhetjük meg:

  1. Ez az a lekérdezés, amely az „employees_guru” táblán végrehajtott SORT BY záradékkal és „id”-vel definiálja a SORT BY oszlop nevét. A DESC kulcsszót használtuk.
  2. Tehát a megjelenített kimenet az „id” csökkenő sorrendjében lesz.

Keresés:

SELECT * from employees_guru SORT BY Id DESC;

Cluster By

Cluster A Hive-QL Distribute BY és Sort BY záradékának alternatívájaként használva.

Cluster A Hive-ban található táblákon használt BY záradék. A Hive az in oszlopokat használja Cluster által a sorok elosztása a szűkítők között. Cluster A BY oszlopok a többszörös reduktorokhoz kerülnek.

  • Biztosítja a több reduktorban lévő értékek rendezési sorrendjét

Például, Cluster A munkavállalók_guru tábla Id oszlopnevében említett záradékkal. A lekérdezés végrehajtásakor a kimenet több reduktornak ad eredményt a háttérben. De kezelőfelületként ez egy alternatív záradék mind a Rendezés szerint, mind a Terjesztés szerint.

Ez valójában egy háttérfolyamat, amikor lekérdezést hajtunk végre rendezési, csoportosítási és fürtözési szempontok szerint a leképezéscsökkentési keretrendszer szempontjából. Tehát ha több reduktorba akarjuk tárolni az eredményeket, akkor ezt választjuk Cluster Által.

Cluster By

A fenti képernyőképből a következő megfigyeléseket kapjuk:

  1. Ez az a lekérdezés, amely végrehajtja a CLUSTER BY záradékot az Id mező értékén. Itt egyfajta Id értékeket fog kapni.
  2. Megjeleníti a guru_employees sorban lévő azonosítót és neveket, sorrendben

Keresés:

SELECT  Id, Name from employees_guru CLUSTER BY Id;

Terjeszti

A Hive-ban lévő táblázatokon használt terjesztés BY záradékkal. A Hive az Elosztás oszlopait használja a sorok elosztására a szűkítők között. Az összes Distribute BY oszlop ugyanabba a szűkítőbe kerül.

  • Biztosítja, hogy az N szűkítő mindegyike átfedő oszloptartományokat kapjon
  • Nem rendezi az egyes reduktorok kimenetét

Terjeszti

A fenti képernyőképből a következőket figyelhetjük meg

  1. DISTRIBUTE BY A záradék az „empoloyees_guru” tábla azonosítóján teljesít
  2. Az azonosítót, nevet tartalmazó kimenet. A hátsó végén ugyanabba a reduktorba kerül

Keresés:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;