Mi az Az Apache Hive és a HiveQL az Azure HDInsightban?
Az Apache Hive az Apache Hadoop adattárházrendszere . A Hive lehetővé teszi az adatok összegzését, lekérdezését és elemzését. A Hive-lekérdezések a HiveQL-ben vannak megírva, amely az SQL-hez hasonló lekérdezési nyelv.
A Hive lehetővé teszi, hogy a struktúrát nagyrészt strukturálatlan adatokra kivetítse. A struktúra definiálása után a HiveQL használatával lekérdezheti az adatokat a Java vagy a MapReduce ismerete nélkül.
A HDInsight számos fürttípust biztosít, amelyek meghatározott számítási feladatokhoz vannak hangolva. A Hive-lekérdezésekhez leggyakrabban a következő fürttípusokat használják:
Fürt típusa | Leírás |
---|---|
Interaktív lekérdezés | Olyan Hadoop-fürt, amely alacsony késésű elemzési feldolgozási (LLAP) funkciókat biztosít az interaktív lekérdezések válaszidejének javításához. További információ: Start with Interactive Query in HDInsight document. |
Hadoop | Egy Hadoop-fürt, amely kötegelt feldolgozási számítási feladatokhoz van hangolva. További információ: Start with Apache Hadoop in HDInsight document. |
Spark | Az Apache Spark beépített funkciókkal rendelkezik a Hive használatához. További információ: Start with Apache Spark on HDInsight document. |
HBase | A HiveQL az Apache HBase-ben tárolt adatok lekérdezésére használható. További információ: Start with Apache HBase on HDInsight document. |
A Hive használata
Az alábbi táblázat segítségével megismerheti a Hive HDInsighttal való használatának különböző módjait:
Használja ezt a módszert , ha szeretné... | ...interaktív lekérdezések | ...kötegelt feldolgozás | ... ebből az ügyfél operációs rendszerből |
---|---|---|---|
HDInsight-eszközök a Visual Studio Code-hoz | ✔ | ✔ | Linux, Unix, macOS X vagy Windows |
HDInsight-eszközök a Visual Studióhoz | ✔ | ✔ | Ablakok |
Hive View | ✔ | ✔ | Bármely (böngészőalapú) |
Beeline-ügyfél | ✔ | ✔ | Linux, Unix, macOS X vagy Windows |
REST API | ✔ | Linux, Unix, macOS X vagy Windows | |
Windows PowerShell | ✔ | Ablakok |
HiveQL nyelvi referencia
A HiveQL nyelvi referencia a nyelvi kézikönyvben érhető el.
Hive és adatstruktúra
A Hive megérti, hogyan használható strukturált és félig strukturált adatokkal. Például olyan szövegfájlok, amelyekben a mezőket meghatározott karakterek tagolják. A következő HiveQL-utasítás egy táblát hoz létre szóközzel tagolt adatokon:
CREATE EXTERNAL TABLE log4jLogs (
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/';
A Hive támogatja az egyéni szerializálókat/deszerializálókat (SerDe) az összetett vagy szabálytalanul strukturált adatokhoz. További információ: Egyéni JSON SerDe használata HDInsight-dokumentumokkal .
A Hive által támogatott fájlformátumokról további információt a Nyelvi kézikönyvben ( ) talál.https://cwiki.apache.org/confluence/display/Hive/LanguageManual)
Belső táblák és külső táblák hive
A Hive használatával kétféle tábla hozható létre:
Belső: Az adatok tárolása a Hive adattárházban történik. Az adattárház a fürt alapértelmezett tárolójában
/hive/warehouse/
található.A következő feltételek valamelyike esetén használjon belső táblákat:
- Az adatok ideiglenesek.
- Azt szeretné, hogy a Hive kezelje a tábla és az adatok életciklusát.
Külső: Az adatok tárolása az adattárházon kívül történik. Az adatok a fürt által elérhető bármely tárolóban tárolhatók.
Külső táblák használata az alábbi feltételek valamelyikének alkalmazása esetén:
- Az adatok a Hive-en kívül is használhatók. Az adatfájlokat például egy másik folyamat frissíti (ez nem zárolja a fájlokat.)
- Az adatoknak a tábla elvetése után is a mögöttes helyen kell maradniuk.
- Szükség van egy egyéni helyre, például egy nem alapértelmezett tárfiókra.
- A hive-en kívüli programok kezelik az adatformátumot, a helyet és így tovább.
További információ: Hive Internal and External Tables Intro blogbejegyzés.
Felhasználó által definiált függvények (UDF)
A Hive felhasználó által definiált függvényekkel (UDF) is bővíthető. Az UDF-sel olyan funkciókat vagy logikát implementálhat, amelyek nem könnyen modelleződnek a HiveQL-ben. Az UDF-ek Hive-lel való használatára a következő dokumentumokban talál példát:
Java felhasználó által definiált függvény használata az Apache Hive-lel
Felhasználó által definiált Python-függvény használata az Apache Hive-lel
C# felhasználó által definiált függvény használata az Apache Hive-lel
Egyéni Apache Hive felhasználó által definiált függvény hozzáadása a HDInsighthoz
Példaadatok
A HIVE on HDInsight előre be van töltve egy belső táblával, amelynek neve hivesampletable
. A HDInsight a Hive-lel használható példaadatkészleteket is tartalmaz. Ezek az adatkészletek a könyvtárakban és /HdiSamples
a /example/data
könyvtárakban vannak tárolva. Ezek a könyvtárak a fürt alapértelmezett tárolójában találhatók.
Példa Hive-lekérdezésre
A következő HiveQL-utasítások projektoszlopokat tartalmaznak a /example/data/sample.log
fájlra:
DROP TABLE log4jLogs;
CREATE EXTERNAL TABLE log4jLogs (
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;
Az előző példában a HiveQL-utasítások a következő műveleteket hajtják végre:
Utasítás | Leírás |
---|---|
DROP TABLE | Ha a tábla már létezik, törölje. |
KÜLSŐ TÁBLA LÉTREHOZÁSA | Új külső táblát hoz létre 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 és az eredeti formátumban maradnak. |
SORFORMÁTUM | Megadja 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. |
SZÖVEGFÁJL HELYEKÉNT TÁROLVA | Közli a Hive-vel, hogy hol tárolják az adatokat (a example/data könyvtárat), és hogy szövegként vannak tárolva. Az adatok lehetnek egy fájlban, vagy több fájlban is elférnek a címtárban. |
SELECT | Kiválasztja az összes olyan sor számát, ahol a t4 oszlop tartalmazza a [HIBA] értéket. Ez az utasítás 3 értéket ad vissza, mert három sor tartalmazza ezt az értéket. |
INPUT__FILE__NAME LIKE '%.log' | A Hive megpróbálja alkalmazni a sémát a könyvtárban lévő összes fájlra. Ebben az esetben a könyvtár olyan fájlokat tartalmaz, amelyek nem felelnek meg a sémának. Az eredmények szemétadatainak megakadályozása érdekében ez az utasítás azt jelzi a Hive-nek, hogy csak a .log végződésű fájlokból kell adatokat visszaadni. |
Megjegyzés:
A külső táblákat akkor kell használni, ha azt várja, hogy a mögöttes adatokat külső forrás frissíti. Például automatizált adatfeltöltési folyamat vagy MapReduce-művelet.
Egy külső tábla elvetése nem törli az adatokat, csak a tábladefiníciót törli.
Ha külső helyett belső táblát szeretne létrehozni, használja a következő HiveQL-t:
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]';
Ezek az utasítások a következő műveleteket hajtják végre:
Utasítás | Leírás |
---|---|
TÁBLA LÉTREHOZÁSA, HA NEM LÉTEZIK | Ha a tábla nem létezik, hozza létre. Mivel a KÜLSŐ kulcsszó nincs használatban, ez az utasítás létrehoz egy belső táblát. A tábla a Hive adattárházban van tárolva, és a Hive teljes mértékben felügyeli. |
ORC-KÉNT TÁROLVA | Az adatokat optimalizált soroszlop (ORC) formátumban tárolja. Az ORC egy rendkívül optimalizált és hatékony formátum Hive-adatok tárolására. |
IN Standard kiadás RT FELÜLÍRÁS ... Standard kiadás LECT | Kijelöli a log4jLogs [ERROR] táblából származó sorokat, majd beszúrja az adatokat a errorLogs táblába. |
Megjegyzés:
A külső táblákkal ellentétben a belső táblák elvetése a mögöttes adatokat is törli.
A Hive-lekérdezési teljesítmény javítása
Apache Tez
Az Apache Tez egy olyan keretrendszer, amely lehetővé teszi az adatintenzív alkalmazások, például a Hive számára, hogy nagyobb léptékben fussanak. A Tez alapértelmezés szerint engedélyezve van. Az Apache Hive on Tez tervezési dokumentumai részletesen ismertetik a megvalósítási lehetőségeket és a konfigurációk finomhangolását.
Kis késésű elemzési feldolgozás (LLAP)
Az LLAP (más néven Live Long and Process) a Hive 2.0 új funkciója, amely lehetővé teszi a lekérdezések memóriabeli gyorsítótárazását.
A HDInsight LLAP-t biztosít az Interaktív lekérdezés fürttípusban. További információ: Start with Interactive Query document.
Hive-lekérdezések ütemezése
Számos szolgáltatás használható Hive-lekérdezések futtatására ütemezett vagy igény szerinti munkafolyamat részeként.
Azure Data Factory
Az Azure Data Factory lehetővé teszi a HDInsight használatát Egy Data Factory-folyamat részeként. A Hive folyamatból való használatával kapcsolatos további információkért tekintse meg az Adatok átalakítása Hive-tevékenységgel az Azure Data Factory-dokumentumban című dokumentumot.
Hive-feladatok és SQL Server Integration Services
Az SQL Server Integration Services (SSIS) használatával Hive-feladatokat futtathat. Az SSIS-hez készült Azure Feature Pack az alábbi összetevőket biztosítja, amelyek Hive-feladatokkal működnek együtt a HDInsighton.
További információkért tekintse meg az Azure Feature Pack dokumentációját.
Apache Oozie
Az Apache Oozie egy munkafolyamat- és koordinációs rendszer, amely a Hadoop-feladatokat kezeli. Az Oozie És a Hive használatával kapcsolatos további információkért tekintse meg az Apache Oozie használata munkafolyamat-dokumentum definiálásához és futtatásához.
Megjegyzés:
A Hive-hez készült Phoenix Storage-kezelő nem támogatott a HDInsightban
További lépések
Most, hogy megismerte, mi a Hive, és hogyan használhatja a Hadooptal a HDInsightban, az alábbi hivatkozások segítségével megismerheti az Azure HDInsighttal való munkavégzés egyéb módjait.