Sdílet prostřednictvím


Co je Apache Hive a HiveQL ve službě Azure HDInsight?

Apache Hive je systém datového skladu pro Apache Hadoop. Hive umožňuje sumarizaci dat, dotazování a analýzu dat. Dotazy Hive se zapisují v HiveQL, což je dotazovací jazyk podobný JAZYKu SQL.

Hive umožňuje projektovat strukturu z velké části nestrukturovaných dat. Po definování struktury můžete pomocí HiveQL dotazovat data bez znalosti Javy nebo MapReduce.

HDInsight poskytuje několik typů clusterů, které jsou vyladěné pro konkrétní úlohy. Pro dotazy Hive se nejčastěji používají následující typy clusterů:

Typ clusteru Popis
Interaktivní dotaz Cluster Hadoop, který poskytuje funkce LLAP (Low Latency Analytical Processing), aby se zlepšila doba odezvy interaktivních dotazů. Další informace najdete v dokumentu Začínáme s interaktivním dotazem v HDInsight .
Hadoop Cluster Hadoop, který je vyladěný pro úlohy dávkového zpracování. Další informace najdete v dokumentu Začínáme s Apache Hadoopem v HDInsight .
Spark Apache Spark má integrovanou funkci pro práci s Hivem. Další informace najdete v dokumentu Začínáme s Apache Sparkem ve službě HDInsight .
HBase HiveQL lze použít k dotazování dat uložených v Apache HBase. Další informace najdete v dokumentu Start s Apache HBase ve službě HDInsight .

Jak používat Hive

Pomocí následující tabulky můžete zjistit různé způsoby použití Hivu se službou HDInsight:

Tuto metodu použijte, pokud chcete... ...interaktivní dotazy ...dávkové zpracování ... z tohoto klientského operačního systému
Nástroje HDInsight pro Visual Studio Code Linux, Unix, macOS X nebo Windows
Nástroje HDInsight pro Visual Studio Okna
Zobrazení Hive Libovolná (založená na prohlížeči)
Klient Beeline Linux, Unix, macOS X nebo Windows
REST API   Linux, Unix, macOS X nebo Windows
Windows PowerShell   Okna

Referenční dokumentace jazyka HiveQL

Referenční informace k jazyku HiveQL jsou k dispozici v jazykové příručce.

Hive a datová struktura

Hive rozumí tomu, jak pracovat se strukturovanými a částečně strukturovanými daty. Například textové soubory, ve kterých jsou pole oddělená určitými znaky. Následující příkaz HiveQL vytvoří tabulku nad daty oddělenými mezerami:

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/';

Hive také podporuje vlastní serializátory a deserializátory (SerDe) pro složitá nebo nepravidelně strukturovaná data. Další informace najdete v tématu Použití vlastního SerDe JSON s dokumentem HDInsight .

Další informace o formátech souborů podporovaných Hivem najdete v příručce jazyka (https://cwiki.apache.org/confluence/display/Hive/LanguageManual)

Interní tabulky Hive vs. externí tabulky

Existují dva typy tabulek, které můžete vytvořit pomocí Hivu:

  • Interní: Data se ukládají do datového skladu Hive. Datový sklad se nachází ve /hive/warehouse/ výchozím úložišti clusteru.

    Interní tabulky použijte, pokud platí jedna z následujících podmínek:

    • Data jsou dočasná.
    • Chcete, aby Hive spravil životní cyklus tabulky a dat.
  • Externí: Data se ukládají mimo datový sklad. Data mohou být uložena v jakémkoli úložišti přístupném clusterem.

    Externí tabulky použijte, pokud platí jedna z následujících podmínek:

    • Data se také používají mimo Hive. Například datové soubory se aktualizují jiným procesem (který soubory nezamkne.)
    • Data musí zůstat v podkladovém umístění i po vyřazení tabulky.
    • Potřebujete vlastní umístění, například jiný než výchozí účet úložiště.
    • Jiný program než Hive spravuje formát dat, umístění atd.

Další informace najdete v blogovém příspěvku Interní a externí tabulky Hive.

Uživatelem definované funkce (UDF)

Hive je také možné rozšířit prostřednictvím uživatelem definovaných funkcí (UDF). UDF umožňuje implementovat funkce nebo logiku, která není snadno modelována v HiveQL. Příklad použití funkcí definované uživatelem s Hivem najdete v následujících dokumentech:

Příklad dat

Hive ve službě HDInsight je předem načtený s interní tabulkou s názvem hivesampletable. HDInsight také poskytuje ukázkové datové sady, které je možné použít s Hivem. Tyto datové sady jsou uložené v /example/data adresářích a /HdiSamples adresářích. Tyto adresáře existují ve výchozím úložišti pro váš cluster.

Příklad dotazu Hive

Následující příkazy HiveQL projektové sloupce do /example/data/sample.log souboru:

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;

V předchozím příkladu příkazy HiveQL provádějí následující akce:

Příkaz Popis
DROP TABLE Pokud tabulka již existuje, odstraňte ji.
VYTVOŘENÍ EXTERNÍ TABULKY Vytvoří novou externí tabulku v Hivu. Externí tabulky ukládají pouze definici tabulky v Hive. Data zůstanou v původním umístění a v původním formátu.
FORMÁT ŘÁDKU Řekne Hivu, jak se data formátují. V tomto případě jsou pole v každém protokolu oddělena mezerou.
ULOŽENÉ JAKO UMÍSTĚNÍ TEXTOVÉHO SOUBORU Řekne Hivu, kde se data ukládají ( example/data adresář) a že jsou uložená jako text. Data můžou být v jednom souboru nebo můžou být rozložená do více souborů v adresáři.
VÝBĚR Vybere počet všech řádků, ve kterých sloupec t4 obsahuje hodnotu [ERROR].. Tento příkaz vrátí hodnotu 3 , protože tato hodnota obsahuje tři řádky.
INPUT__FILE__NAME LIKE %.log Hive se pokusí použít schéma pro všechny soubory v adresáři. V tomto případě adresář obsahuje soubory, které neodpovídají schématu. Aby se zabránilo uvolňování paměti ve výsledcích, tento příkaz říká Hivu, že bychom měli vracet pouze data ze souborů končících v .log.

Poznámka:

Externí tabulky by se měly použít, když očekáváte, že se podkladová data aktualizují externím zdrojem. Například automatizovaný proces nahrávání dat nebo operace MapReduce.

Vyřazení externí tabulky neodstraní data, odstraní pouze definici tabulky.

Pokud chcete místo externí tabulky vytvořit interní tabulku, použijte následující HiveQL:

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]';

Tyto příkazy provádějí následující akce:

Příkaz Popis
VYTVOŘENÍ TABULKY, POKUD NEEXISTUJE Pokud tabulka neexistuje, vytvořte ji. Protože se nepoužívá klíčové slovo EXTERNAL, vytvoří tento příkaz interní tabulku. Tabulka je uložená v datovém skladu Hive a spravuje ji zcela Hive.
ULOŽENÉ JAKO ORC Ukládá data ve formátu ORC (Optimized Row Columnar). ORC je vysoce optimalizovaný a efektivní formát pro ukládání dat Hive.
INSERT OVERWRITE ... VYBERTE Vybere řádky z log4jLogs tabulky, která obsahuje [ERROR], a pak vloží data do tabulky errorLogs .

Poznámka:

Na rozdíl od externích tabulek odstraní interní tabulka také podkladová data.

Vylepšení výkonu dotazů Hivu

Apache Tez

Apache Tez je architektura, která umožňuje, aby aplikace náročné na data, jako je Hive, běžely mnohem efektivněji ve velkém měřítku. Tez je ve výchozím nastavení povolený. Dokumenty návrhu Apache Hivu v Tez obsahují podrobnosti o možnostech implementace a konfiguraci ladění.

Analytické zpracování s nízkou latencí (LLAP)

LLAP (někdy označovaný jako Live Long and Process) je nová funkce Hive 2.0, která umožňuje ukládání dotazů do mezipaměti v paměti.

HDInsight poskytuje LLAP v typu clusteru Interactive Query. Další informace najdete v dokumentu Začínáme s interaktivním dotazem .

Plánování dotazů Hivu

Existuje několik služeb, které je možné použít ke spouštění dotazů Hive jako součást naplánovaného pracovního postupu nebo pracovního postupu na vyžádání.

Azure Data Factory

Azure Data Factory umožňuje používat HDInsight jako součást kanálu služby Data Factory. Další informace o používání Hivu z kanálu najdete v dokumentu o transformaci dat pomocí aktivity Hive ve službě Azure Data Factory .

Úlohy Hive a služby SQL Server Integration Services

Ke spuštění úlohy Hive můžete použít službu SQL Server Integration Services (SSIS). Sada Funkcí Azure pro SSIS poskytuje následující komponenty, které pracují s úlohami Hive ve službě HDInsight.

Další informace najdete v dokumentaci k sadě Azure Feature Pack .

Apache Oozie

Apache Oozie je pracovní postup a koordinační systém, který spravuje úlohy Hadoopu. Další informace o použití Oozie s Hive naleznete v tématu Použití Apache Oozie k definování a spuštění dokumentu pracovního postupu .

Poznámka:

Obslužná rutina úložiště Phoenix pro Hive se v HDInsight nepodporuje.

Další kroky

Teď, když jste se dozvěděli, co je Hive a jak ho používat s Hadoopem ve službě HDInsight, můžete pomocí následujících odkazů prozkoumat další způsoby práce se službou Azure HDInsight.