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:
Použití uživatelem definované funkce jazyka C# s Apache Hivem
Postup přidání vlastní uživatelem definované funkce Apache Hive do HDInsight
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.