Hive lekérdezések: Rendezés, csoportosítás, elosztás, fürt példák szerint

Tartalomjegyzék:

Anonim

A Hive SQL típusú lekérdező nyelvet biztosít az ETL célra a Hadoop fájlrendszer tetején.

A Hive Query nyelv (HiveQL) SQL típusú környezetet biztosít a Hive-ban, hogy táblákkal, adatbázisokkal és lekérdezésekkel dolgozzon.

Különböző típusú záradékok társíthatók a Hive-hez különböző típusú adatkezelések és lekérdezések elvégzéséhez. A jobb kapcsolódás érdekében a különböző csomópontokkal a környezeten kívül. A HIVE biztosítja a JDBC csatlakozást is.

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

  • Adatmodellezés, például adatbázisok, táblák létrehozása stb.
  • Az ETL-funkciók, mint például a kibontás, az átalakítás és az adatok táblákba töltése
  • Csatlakozik a különböző adattáblák egyesítéséhez
  • Felhasználóspecifikus egyedi szkriptek a kód megkönnyítése érdekében
  • Gyorsabb lekérdező eszköz a Hadoop tetején

Ebben a cikkben megtudhatja,

  • Rendezés lekérdezés szerint
  • Csoportosítás lekérdezés szerint
  • Rendezés
  • Cluster By
  • Terjesztés:

Táblázat létrehozása a kaptárban

Mielőtt az oktatóanyag fő témájával foglalkoznánk, először létre kell hoznunk egy táblázatot, amely hivatkozásként használja a következő oktatóanyagra.

Itt, ebben az oktatóanyagban, létrehozunk "oszlopok_guru" táblát 6 oszloppal.

A fenti képernyőfotóból

  1. Létrehozzuk az "alkalmazottak_guru" táblázatot 6 oszlopértékkel, például Id, Név, Kor, Cím, Fizetés, Osztály, amely a "guru" szervezetben jelen lévő alkalmazottakhoz tartozik.
  2. Ebben a lépésben az adatokat betöltsük az alkalmazott_guru táblába. Azok az adatok, amelyeket betölteni fogunk, az Employees.txt fájlba kerülnek

Rendezés lekérdezés szerint:

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

A rendezés az a záradék, amelyet a Hive-lekérdezésekben a "SELECT" utasítással együtt használunk, amely segít az adatok rendezésében. Sorrend tagmondat szerint használja a Hive táblák oszlopait a Rendezés szerint említett oszlopértékek rendezéséhez. Bármely oszlopnév esetén is meghatározzuk a sorrendet záradékkal, a lekérdezés kiválasztja és megjeleníti az eredményeket az adott oszlopértékek növekvő vagy csökkenő sorrendjében.

Ha az említett mezőnkénti sorrend karakterlánc, akkor az eredmény lexikográfiai sorrendben jelenik meg. A hátsó végén át kell adni egyetlen reduktornak.

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

  1. Ez az a lekérdezés, amelyet az "alkalmazottak_guru" táblán az ORDER BY záradékkal kell végrehajtani, a Tanszékkel az ORDER BY oszlopnév szerint.

    A "Department" karakterlánc, így 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 az eredményeket a DepartmentQ oszlop, például az ADMIN, a Finance stb. Alapján jeleníti meg a orderQuery elvégzéséhez.

Lekérdezés :

SELECT * FROM employees_guru ORDER BY Department;

Csoportosítás lekérdezés szerint:

Záradék alapján csoportosítson oszlopokat a Hive táblákon az egyes oszlopértékek csoportosításához. Bármely oszlopnévnél 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 van a "Tanszék", mint érték szerinti csoport.

A fenti képernyőkép alapján a következőket fogjuk megfigyelni

  1. Ez az a lekérdezés, amelyet az "alkalmazottak_guru" táblán hajtanak végre, a GROUP BY záradékkal, a Department szerint pedig a GROUP BY oszlopnévvel.
  2. Az itt látható kimenet a részleg neve, és az alkalmazottak különböző osztályokban számolnak. Itt az adott osztályhoz tartozó összes alkalmazott csoportosítva és megjelenítve szerepel az eredményekben. Tehát az eredmény a részleg neve, az egyes részlegeken jelen lévő összes alkalmazottal.

Lekérdezés:

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

Rendezés:

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

Ebben a rendezésben rendezi a sorokat, mielőtt betáplálná a reduktorba. A rendezés mindig az oszlop típusátó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 rendezi.

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

  1. Ez a lekérdezés, amely az "alkalmazottak_guru" táblán a SORT BY záradékkal és az "id" kifejezéssel 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ő sorrendben lesz.

Lekérdezés:

SELECT * from employees_guru SORT BY Id DESC;

Klaszter:

Klaszter A Hive-QL mind a Distribute BY, mind a Sort BY záradékának alternatívájaként használható.

A Hive-ban található táblákon használt fürt BY záradék. A Hive a Cluster oszlopait használja a sorok szétosztására a reduktorok között. A Cluster BY oszlopok a többszörös csökkentőkhöz kerülnek.

  • Biztosítja a több szűkítőben lévő értékek rendezését

Például a Cluster By záradék, amely a munkavállalók_guru tábla Id oszlopának nevében szerepel. A lekérdezés végrehajtásakor a kimenet eredményeket ad a végén lévő több szűkítőnek. De előtérként ez egy alternatív záradék mind a Rendezés, mind az Elosztás szerint.

Ez valójában háttér-folyamat, amikor egy lekérdezést rendezés, csoportosítás és csoportosítás szerint hajtunk végre a Térképcsökkentés keretrendszer szempontjából. Tehát, ha az eredményeket több reduktorba akarjuk tárolni, akkor a Cluster By-vel megyünk.

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

  1. Ez a lekérdezés hajtja végre a CLUSTER BY záradékot az Id mezőértékben. Itt rendezni fogja az Id értékeket.
  2. Megjeleníti a guru_employees-ben lévő azonosítókat és neveket rendezés szerint

Lekérdezés:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Terjesztés:

A Hive-ben található táblákon használt BY-záradék terjesztése. A Hive az Elosztás szerint oszlopokat használja a sorok szétosztására a reduktorok között. Az összes Distribute BY oszlop ugyanahhoz a reduktorhoz kerül.

  • Biztosítja, hogy az N reduktor mindegyikének átfedés nélküli oszloptartománya legyen
  • Nem rendezi az egyes reduktorok kimenetét

A fenti képernyőkép alapján a következőket figyelhetjük meg

  1. DISTRIBUTE BY Az "empoloyees_guru" tábla azonosítóján szereplő záradék
  2. A kimenet megjeleníti az Id, Name nevet. Hátul ugyanarra a reduktorra kerül

Lekérdezés:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;