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:

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.