Apache Hive-lekérdezések futtatása a Data Lake Tools for Visual Studióval
Megtudhatja, hogyan kérdezheti le az Apache Hive-t a Visual Studio Data Lake-eszközeivel. A Data Lake-eszközökkel egyszerűen hozhat létre, küldhet el és figyelhet Hive-lekérdezéseket az Azure HDInsighton futó Apache Hadoopba.
Előfeltételek
Apache Hadoop-fürt a HDInsighton. Az elem létrehozásával kapcsolatos információkért lásd : Apache Hadoop-fürt létrehozása az Azure HDInsightban Resource Manager-sablonnal.
Visual Studio. A cikk lépései a Visual Studio 2019-et használják.
HDInsight-eszközök a Visual Studióhoz vagy a Visual Studióhoz készült Azure Data Lake-eszközökhöz. Az eszközök telepítéséről és konfigurálásáról további információt a Data Lake Tools for Visual Studio telepítése című témakörben talál.
Apache Hive-lekérdezések futtatása a Visual Studióval
Hive-lekérdezések létrehozására és futtatására két lehetősége van:
- Alkalmi lekérdezések létrehozása.
- Hozzon létre egy Hive-alkalmazást.
Alkalmi Hive-lekérdezés létrehozása
Az alkalmi lekérdezések Batch vagy Interaktív módban is végrehajthatók.
Indítsa el a Visual Studiót , és válassza a Folytatás kód nélkül lehetőséget.
A Kiszolgálókezelőben kattintson a jobb gombbal az Azure-ra, válassza a Csatlakozás a Microsoft Azure-előfizetéshez... lehetőséget, és fejezze be a bejelentkezési folyamatot.
Bontsa ki a HDInsightot, kattintson a jobb gombbal arra a fürtre, ahol futtatni szeretné a lekérdezést, majd válassza a Hive-lekérdezés írása lehetőséget.
Adja meg a következő hive-lekérdezést:
SELECT * FROM hivesampletable;
Válassza a Végrehajtás lehetőséget. A végrehajtási mód alapértelmezés szerint interaktív.
Ha ugyanazt a lekérdezést Batch módban szeretné futtatni, állítsa a legördülő listát interaktívról Batchre. A végrehajtási gomb a Végrehajtásról a Küldésre változik.
A Hive szerkesztője támogatja az IntelliSense-t. A Data Lake Tools for Visual Studio támogatja a távoli metaadatok betöltését a Hive-szkript szerkesztésekor. Ha például beírja
SELECT * FROM
, az IntelliSense felsorolja az összes javasolt táblanevet. Amikor megad egy táblanevet, az IntelliSense listázza az oszlopneveket. Az eszközök a legtöbb Hive DML-utasítást, -segédlekérdezést és beépített UDF-et támogatják. Az IntelliSense csak a HDInsight eszköztáron kijelölt fürt metaadatait javasolja.A lekérdezési eszköztáron (a lekérdezési lap alatti területen és a lekérdezés szövege fölött) válassza a Küldés lehetőséget, vagy válassza a Lekérés gomb melletti lekéréses nyilat, és válassza a Speciális lehetőséget a lekéréses listából. Ha az utóbbi lehetőséget választja,
Ha a speciális küldési lehetőséget választotta, konfigurálja a feladat nevét, argumentumait, további konfigurációit és állapotkönyvtárát a Szkript elküldése párbeszédpanelen. Ezután válassza a Küldés lehetőséget.
Hive alkalmazás létrehozása
Hive-lekérdezés hive-alkalmazás létrehozásával történő futtatásához kövesse az alábbi lépéseket:
Nyissa meg a Visual Studiót.
A Start ablakban válassza az Új projekt létrehozása lehetőséget.
Az Új projekt létrehozása ablakban, a Sablonok keresése mezőbe írja be a Hive kifejezést. Ezután válassza a Hive-alkalmazás lehetőséget, és válassza a Tovább gombot.
Az új projekt konfigurálása ablakban adja meg a projekt nevét, válassza ki vagy hozza létre az új projekt helyét, majd válassza a Létrehozás lehetőséget.
Nyissa meg a projekttel létrehozott Script.hql fájlt, és illessze be a következő HiveQL-utasításokat:
set hive.execution.engine=tez; DROP TABLE log4jLogs; CREATE EXTERNAL TABLE log4j Logs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION '/example/data/'; SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
Ezek az utasítások a következő műveleteket hajtják végre:
DROP TABLE
: Törli a táblát, ha létezik.CREATE EXTERNAL TABLE
: Létrehoz egy új "külső" táblát a Hive-ben. A külső táblák csak a Hive-ben tárolják a tábladefiníciót. (Az adatok az eredeti helyen maradnak.)Feljegyzés
A külső táblákat akkor érdemes használni, ha a mögöttes adatokat külső forrás, például MapReduce-feladat vagy Azure-szolgáltatás frissíti.
Egy külső tábla elvetése nem törli az adatokat, csak a tábladefiníciót.
ROW FORMAT
: Megmutatja a Hive-nek, hogyan formázza az adatokat. Ebben az esetben az egyes naplók mezőit szóköz választja el egymástól.STORED AS TEXTFILE LOCATION
: Azt jelzi a Hive-nek, hogy az adatok a példában/adatkönyvtárban tárolódnak, és szövegként lesznek tárolva.SELECT
: Kiválasztja az összes olyan sor számát, ahol az oszlopt4
tartalmazza az értéket[ERROR]
. Ez az utasítás egy értéket3
ad vissza, mert három sor tartalmazza ezt az értéket.INPUT__FILE__NAME LIKE '%.log'
: Arra utasítja a Hive-t, hogy csak .log végződő fájlokból adja vissza az adatokat. Ez a záradék az adatokat tartalmazó sample.log fájlra korlátozza a keresést.
A lekérdezésfájl eszköztárán (amely hasonló az alkalmi lekérdezési eszköztárhoz) válassza ki a lekérdezéshez használni kívánt HDInsight-fürtöt. Ezután módosítsa az Interaktív beállítást Batchre (ha szükséges), és válassza a Küldés lehetőséget az utasítások Hive-feladatként való futtatásához.
Megjelenik a Hive-feladat összegzése , és megjeleníti a futó feladat adatait. A Frissítés hivatkozással frissítse a feladat adatait, amíg a feladat állapota befejezettre nem változik.
Válassza a Feladat kimenete lehetőséget a feladat kimenetének megtekintéséhez.
[ERROR] 3
Megjeleníti a lekérdezés által visszaadott értéket.
További példa
Az alábbi példa az log4jLogs
előző eljárásban létrehozott, Hive-alkalmazás létrehozása nevű táblára támaszkodik.
A Kiszolgálókezelőben kattintson a jobb gombbal a fürtre, és válassza a Hive-lekérdezés írása lehetőséget.
Adja meg a következő hive-lekérdezést:
set hive.execution.engine=tez; CREATE TABLE IF NOT EXISTS errorLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) STORED AS ORC; INSERT OVERWRITE TABLE errorLogs SELECT t1, t2, t3, t4, t5, t6, t7 FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log';
Ezek az utasítások a következő műveleteket hajtják végre:
CREATE TABLE IF NOT EXISTS
: Létrehoz egy táblát, ha még nem létezik. Mivel aEXTERNAL
kulcsszó nincs használatban, ez az utasítás létrehoz egy belső táblát. A belső táblák a Hive adattárházban vannak tárolva, és a Hive kezeli őket.Feljegyzés
A táblákkal ellentétben
EXTERNAL
a belső táblák elvetése a mögöttes adatokat is törli.STORED AS ORC
: Optimalizált soroszlopos (ORC) formátumban tárolja az adatokat. Az ORC egy rendkívül optimalizált és hatékony formátum Hive-adatok tárolására.INSERT OVERWRITE ... SELECT
: Kijelöli alog4jLogs
táblázat azon sorait, amelyek tartalmazzák[ERROR]
, majd beszúrja az adatokat aerrorLogs
táblába.
Szükség esetén módosítsa az Interaktív beállítást Batchre, majd válassza a Küldés lehetőséget.
Annak ellenőrzéséhez, hogy a feladat létrehozta-e a táblát, lépjen a Kiszolgálókezelőbe, és bontsa ki az Azure>HDInsightot. Bontsa ki a HDInsight-fürtöt, majd bontsa ki az alapértelmezett Hive Database-adatbázisokat>. Megjelenik a errorLogs tábla és a Log4jLogs tábla.
Következő lépések
Mint látható, a HdInsight Visual Studio-eszközökkel egyszerűen dolgozhat Hive-lekérdezésekkel a HDInsighton.
A HDInsightban található Hive-ről általános információkért lásd : Mi az az Apache Hive és a HiveQL az Azure HDInsightban?
További információ a Hadoop hdinsighton való használatáról: A MapReduce használata az Apache Hadoop on HDInsightban
A HdInsight Visual Studio-eszközökkel kapcsolatos további információkért lásd : Data Lake Tools for Visual Studio az Azure HDInsighthoz való csatlakozáshoz és Apache Hive-lekérdezések futtatásához