Co je Apache Hive a HiveQL ve službě Azure HDInsight?What is Apache Hive and HiveQL on Azure HDInsight?

Apache Hive je systém datového skladu pro Apache Hadoop.Apache Hive is a data warehouse system for Apache Hadoop. Podregistr umožňuje sumarizaci dat, dotazování a analýzu dat.Hive enables data summarization, querying, and analysis of data. Dotazy na podregistr se napíší v HiveQL, což je dotazovací jazyk podobný SQL.Hive queries are written in HiveQL, which is a query language similar to SQL.

Podregistr umožňuje strukturování struktury na základě strukturovaných dat.Hive allows you to project structure on largely structured data. Po definování struktury můžete použít HiveQL k dotazování dat bez znalosti jazyka Java nebo MapReduce.After you define the structure, you can use HiveQL to query the data without knowledge of Java or MapReduce.

HDInsight nabízí několik typů clusterů, které jsou vyladěné pro konkrétní úlohy.HDInsight provides several cluster types, which are tuned for specific workloads. Následující typy clusterů se nejčastěji používají pro dotazy na podregistry:The following cluster types are most often used for Hive queries:

Jak používat podregistrHow to use Hive

Pro zjištění různých způsobů použití podregistru se službou HDInsight použijte následující tabulku:Use the following table to discover the different ways to use Hive with HDInsight:

Tuto metodu použijte , pokud chcete...Use this method if you want... ... interaktivní dotazy...interactive queries ... dávkové zpracování...batch processing ... z tohoto klientského operačního systému...from this client operating system
Nástroje HDInsight pro Visual Studio CodeHDInsight tools for Visual Studio Code Linux, UNIX, Mac OS X nebo WindowsLinux, Unix, Mac OS X, or Windows
Nástroje HDInsight pro Visual StudioHDInsight tools for Visual Studio WindowsWindows
Zobrazení podregistruHive View Jakékoli (založené na prohlížeči)Any (browser based)
Klient BeelineBeeline client Linux, UNIX, Mac OS X nebo WindowsLinux, Unix, Mac OS X, or Windows
REST APIREST API   Linux, UNIX, Mac OS X nebo WindowsLinux, Unix, Mac OS X, or Windows
Prostředí Windows PowerShellWindows PowerShell   WindowsWindows

Reference k jazyku HiveQLHiveQL language reference

Reference k jazyku HiveQL je k dispozici v příručce jazyka.HiveQL language reference is available in the language manual.

Struktura podregistru a datHive and data structure

Podregistr chápe, jak pracovat se strukturovanými a částečně strukturovanými daty.Hive understands how to work with structured and semi-structured data. Například textové soubory, kde jsou pole oddělená konkrétními znaky.For example, text files where the fields are delimited by specific characters. Následující příkaz HiveQL vytvoří tabulku pro data oddělená mezerou:The following HiveQL statement creates a table over space-delimited data:

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

Podregistr také podporuje vlastní serializátor nebo deserializaci (SerDe) pro složitá nebo nepravidelná strukturovaná data.Hive also supports custom serializer/deserializers (SerDe) for complex or irregularly structured data. Další informace najdete v tématu Jak používat vlastní SERDE JSON s dokumentem HDInsight.For more information, see the How to use a custom JSON SerDe with HDInsight document.

Další informace o formátech souborů podporovaných podregistru najdete v tématu Příručka k jazyku (https://cwiki.apache.org/confluence/display/Hive/LanguageManual)For more information on file formats supported by Hive, see the Language manual (https://cwiki.apache.org/confluence/display/Hive/LanguageManual)

Vnitřní tabulky a externí tabulky podregistruHive internal tables vs external tables

Existují dva typy tabulek, které lze vytvořit s podregistru:There are two types of tables that you can create with Hive:

  • Interní: data jsou uložená v datovém skladu podregistru.Internal: Data is stored in the Hive data warehouse. Datový sklad je umístěný na /hive/warehouse/ ve výchozím úložišti pro daný cluster.The data warehouse is located at /hive/warehouse/ on the default storage for the cluster.

    Použijte interní tabulky, pokud platí jedna z následujících podmínek:Use internal tables when one of the following conditions apply:

    • Data jsou dočasná.Data is temporary.
    • Chcete, aby podregistr spravoval životní cyklus tabulky a dat.You want Hive to manage the lifecycle of the table and data.
  • Externí: data se ukládají mimo datový sklad.External: Data is stored outside the data warehouse. Data je možné ukládat do libovolného úložiště přístupného clusterem.The data can be stored on any storage accessible by the cluster.

    Externí tabulky použijte v případě, že platí jedna z následujících podmínek:Use external tables when one of the following conditions apply:

    • Data se také používají mimo podregistr.The data is also used outside of Hive. Například datové soubory jsou aktualizovány jiným procesem (což nezamkne soubory.)For example, the data files are updated by another process (that does not lock the files.)
    • Data musí zůstat v základním umístění, a to i po vyřazení tabulky.Data needs to remain in the underlying location, even after dropping the table.
    • Potřebujete vlastní umístění, jako je například účet úložiště, který není výchozí.You need a custom location, such as a non-default storage account.
    • Jiný program než podregistr spravuje formát dat, umístění atd.A program other than hive manages the data format, location, etc.

Další informace najdete v blogovém příspěvku v interních a externích tabulkách pro podregistr .For more information, see the Hive Internal and External Tables Intro blog post.

Uživatelsky definované funkce (UDF)User-defined functions (UDF)

Podregistr se dá taky rozšířit prostřednictvím uživatelsky definovaných funkcí (UDF) .Hive can also be extended through user-defined functions (UDF). Systém souborů UDF umožňuje implementovat funkce nebo logiku, které nejsou v HiveQL snadno modelované.A UDF allows you to implement functionality or logic that isn't easily modeled in HiveQL. Příklad použití UDF s podregistrem najdete v následujících dokumentech:For an example of using UDFs with Hive, see the following documents:

Ukázková dataExample data

Podregistr v HDInsight je předem načtený pomocí interní tabulky s názvem hivesampletable.Hive on HDInsight comes pre-loaded with an internal table named hivesampletable. HDInsight také poskytuje příklady datových sad, které se dají použít s podregistru.HDInsight also provides example data sets that can be used with Hive. Tyto sady dat jsou uložené v adresářích /example/data a /HdiSamples.These data sets are stored in the /example/data and /HdiSamples directories. Tyto adresáře existují ve výchozím úložišti pro váš cluster.These directories exist in the default storage for your cluster.

Ukázkový dotaz na podregistrExample Hive query

Následující příkazy HiveQL vystaví sloupce projektu do souboru /example/data/sample.log:The following HiveQL statements project columns onto the /example/data/sample.log file:

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:In the previous example, the HiveQL statements perform the following actions:

  • DROP TABLE: Pokud tabulka již existuje, odstraňte ji.DROP TABLE: If the table already exists, delete it.

  • CREATE EXTERNAL TABLE: Vytvoří novou externí tabulku v podregistru.CREATE EXTERNAL TABLE: Creates a new external table in Hive. Externí tabulky ukládají pouze definici tabulky v podregistru.External tables only store the table definition in Hive. Data zůstanou v původním umístění a v původním formátu.The data is left in the original location and in the original format.

  • ROW FORMAT: instruuje podregistr, jak se data naformátují.ROW FORMAT: Tells Hive how the data is formatted. V tomto případě jsou pole v každém protokolu oddělená mezerou.In this case, the fields in each log are separated by a space.

  • STORED AS TEXTFILE LOCATION: říká podregistru, ve kterém jsou uložená data (adresář example/data) a který je uložený jako text.STORED AS TEXTFILE LOCATION: Tells Hive where the data is stored (the example/data directory) and that it's stored as text. Data mohou být v jednom souboru nebo rozložena mezi více souborů v rámci adresáře.The data can be in one file or spread across multiple files within the directory.

  • SELECT: vybere počet všech řádků, ve kterých sloupec T4 obsahuje hodnotu [Chyba] .SELECT: Selects a count of all rows where the column t4 contains the value [ERROR]. Tento příkaz vrátí hodnotu 3 , protože existují tři řádky, které obsahují tuto hodnotu.This statement returns a value of 3 because there are three rows that contain this value.

  • INPUT__FILE__NAME LIKE '%.log' – podregistr se pokusí použít schéma pro všechny soubory v adresáři.INPUT__FILE__NAME LIKE '%.log' - Hive attempts to apply the schema to all files in the directory. V tomto případě adresář obsahuje soubory, které neodpovídají schématu.In this case, the directory contains files that don't match the schema. Aby se zabránilo uvolňování dat ve výsledcích, tento příkaz oznamuje podregistru, že by mělo vracet pouze data ze souborů končících log. log.To prevent garbage data in the results, this statement tells Hive that we should only return data from files ending in .log.

Poznámka

Externí tabulky by měly být použity, pokud očekáváte, že budou zdrojová data aktualizována externím zdrojem.External tables should be used when you expect the underlying data to be updated by an external source. Například proces automatizovaného nahrávání dat nebo operace MapReduce.For example, an automated data upload process, or MapReduce operation.

Při vyřazení externí tabulky se data neodstraňují , jenom definice tabulky se odstraní.Dropping an external table does not delete the data, it only deletes the table definition.

Chcete-li vytvořit interní tabulku místo External, použijte následující HiveQL:To create an internal table instead of external, use the following 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:These statements perform the following actions:

  • CREATE TABLE IF NOT EXISTS: Pokud tabulka neexistuje, vytvořte ji.CREATE TABLE IF NOT EXISTS: If the table does not exist, create it. Vzhledem k tomu, že se klíčové slovo External nepoužívá, vytvoří tento příkaz interní tabulku.Because the EXTERNAL keyword isn't used, this statement creates an internal table. Tabulka je uložená v datovém skladu podregistru a je plně spravovaná podregistrem.The table is stored in the Hive data warehouse and is managed completely by Hive.

  • STORED AS ORC: ukládá data ve formátu optimalizovaného řádku (ORC).STORED AS ORC: Stores the data in Optimized Row Columnar (ORC) format. ORC je vysoce optimalizovaný a efektivní formát pro ukládání dat z podregistru.ORC is a highly optimized and efficient format for storing Hive data.

  • INSERT OVERWRITE ... SELECT: Vybere řádky z tabulky log4jLogs , která obsahuje [Error] , a pak data vloží do tabulky chyb .INSERT OVERWRITE ... SELECT: Selects rows from the log4jLogs table that contains [ERROR], and then inserts the data into the errorLogs table.

Poznámka

Vyřazení interní tabulky na rozdíl od externích tabulek odstraní také podkladová data.Unlike external tables, dropping an internal table also deletes the underlying data.

Zvýšení výkonu dotazů na podregistrImprove Hive query performance

Apache TezApache Tez

Apache tez je rozhraní, které umožňuje aplikacím náročným na data, jako je například podregistr, fungovat mnohem efektivněji ve velkém měřítku.Apache Tez is a framework that allows data intensive applications, such as Hive, to run much more efficiently at scale. Tez je ve výchozím nastavení povolená.Tez is enabled by default. Apache Hive v dokumentech návrhu tez obsahuje podrobnosti o volbách implementace a ladění konfigurací.The Apache Hive on Tez design documents contains details about the implementation choices and tuning configurations.

Analytické zpracování s nízkou latencí (LLAP)Low Latency Analytical Processing (LLAP)

LLAP (někdy označované jako Live Long and Process) je nová funkce v podregistru 2,0, která umožňuje ukládání dotazů do mezipaměti v paměti.LLAP (sometimes known as Live Long and Process) is a new feature in Hive 2.0 that allows in-memory caching of queries. LLAP vydává dotazy na podregistr mnohem rychleji, až do 26x rychleji než v registru 1. x v některých případech.LLAP makes Hive queries much faster, up to 26x faster than Hive 1.x in some cases.

HDInsight poskytuje LLAP v typu clusteru interaktivních dotazů.HDInsight provides LLAP in the Interactive Query cluster type. Další informace najdete v dokumentu Začínáme s interaktivním dotazem .For more information, see the Start with Interactive Query document.

Plánování dotazů na podregistrScheduling Hive queries

K dispozici je několik služeb, které se dají použít ke spouštění dotazů na podregistr v rámci plánu nebo pracovního postupu na vyžádání.There are several services that can be used to run Hive queries as part of a scheduled or on-demand workflow.

Azure Data FactoryAzure Data Factory

Azure Data Factory umožňuje používat HDInsight jako součást kanálu Data Factory.Azure Data Factory allows you to use HDInsight as part of a Data Factory pipeline. Další informace o použití podregistru z kanálu naleznete v tématu transformace dat pomocí aktivity podregistru v dokumentu Azure Data Factory .For more information on using Hive from a pipeline, see the Transform data using Hive activity in Azure Data Factory document.

Úlohy podregistru a služba SSIS (SQL Server Integration Services)Hive jobs and SQL Server Integration Services

Ke spuštění úlohy podregistru můžete použít služba SSIS (SQL Server Integration Services) (SSIS).You can use SQL Server Integration Services (SSIS) to run a Hive job. Sada Azure Feature Pack pro SSIS poskytuje následující komponenty, které pracují s úlohami podregistru v HDInsight.The Azure Feature Pack for SSIS provides the following components that work with Hive jobs on HDInsight.

Další informace najdete v dokumentaci k Azure Feature Pack .For more information, see the Azure Feature Pack documentation.

Apache OozieApache Oozie

Apache Oozie je pracovní postup a systém koordinace, který spravuje úlohy systému Hadoop.Apache Oozie is a workflow and coordination system that manages Hadoop jobs. Další informace o použití Oozie s podregistrem najdete v tématu věnovaném Definování a spuštění dokumentu pracovního postupu pomocí Apache Oozie .For more information on using Oozie with Hive, see the Use Apache Oozie to define and run a workflow document.

Další krokyNext steps

Teď, když jste se naučili, jaký podregistr je a jak ho používat se systémem Hadoop ve službě HDInsight, můžete pomocí následujících odkazů prozkoumat další způsoby práce s Azure HDInsight.Now that you've learned what Hive is and how to use it with Hadoop in HDInsight, use the following links to explore other ways to work with Azure HDInsight.