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
- 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.
- 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
- 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.
- 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
- 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.
- 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:
- 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.
- 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:
- 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.
- 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
- DISTRIBUTE BY Az "empoloyees_guru" tábla azonosítóján szereplő záradék
- 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;