Použití Apache Beeline klienta s Apache HiveUse the Apache Beeline client with Apache Hive

Další informace o použití Apache Beeline spustit dotazy Apache Hive v HDInsight.Learn how to use Apache Beeline to run Apache Hive queries on HDInsight.

Beeline je klient Hive, který je součástí hlavní uzly clusteru HDInsight.Beeline is a Hive client that is included on the head nodes of your HDInsight cluster. Beeline používá JDBC pro připojení k serveru HiveServer2, služba hostovaná v clusteru HDInsight.Beeline uses JDBC to connect to HiveServer2, a service hosted on your HDInsight cluster. Také vám pomůže Beeline Hive v HDInsight přistupovat vzdáleně přes internet.You can also use Beeline to access Hive on HDInsight remotely over the internet. Následující příklady popisují nejběžnější připojovací řetězce pro připojení k HDInsight z Beeline:The following examples provide the most common connection strings used to connect to HDInsight from Beeline:

Typy připojeníTypes of connections

Z relace SSHFrom an SSH session

Když se připojujete z relace SSH k hlavnímu uzlu clusteru, pak můžete připojit k headnodehost adresu na portu 10001:When connecting from an SSH session to a cluster headnode, you can then connect to the headnodehost address on port 10001:

beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'

Prostřednictvím služby Azure Virtual NetworkOver an Azure Virtual Network

Při připojování z klienta k HDInsight prostřednictvím služby Azure Virtual Network, musíte plně kvalifikovaný název domény (FQDN) hlavního uzlu clusteru.When connecting from a client to HDInsight over an Azure Virtual Network, you must provide the fully qualified domain name (FQDN) of a cluster head node. Protože toto připojení se provádí přímo na uzlech clusteru, připojení používá port 10001:Since this connection is made directly to the cluster nodes, the connection uses port 10001:

beeline -u 'jdbc:hive2://<headnode-FQDN>:10001/;transportMode=http'

Nahraďte <headnode-FQDN> s plně kvalifikovaný název domény hlavního uzlu clusteru.Replace <headnode-FQDN> with the fully qualified domain name of a cluster headnode. Pokud chcete zjistit plně kvalifikovaný název domény hlavního uzlu, použijte informace v Správa HDInsight pomocí rozhraní REST API Apache Ambari dokumentu.To find the fully qualified domain name of a headnode, use the information in the Manage HDInsight using the Apache Ambari REST API document.


Do clusteru HDInsight Enterprise Security Package (ESP)To HDInsight Enterprise Security Package (ESP) cluster

Když připojení z klienta do clusteru Enterprise Security Package (ESP) připojí k Azure Active Directory (AAD), musíte také zadat název domény <AAD-Domain> a název domény uživatelského účtu s oprávněními pro přístup ke clusteru <username>:When connecting from a client to an Enterprise Security Package (ESP) cluster joined to Azure Active Directory (AAD), you must also specify the domain name <AAD-Domain> and the name of a domain user account with permissions to access the cluster <username>:

kinit <username>
beeline -u 'jdbc:hive2://<headnode-FQDN>:10001/default;principal=hive/_HOST@<AAD-Domain>;auth-kerberos;transportMode=http' -n <username>

Nahraďte <username> s názvem účtu domény s oprávněními pro přístup ke clusteru.Replace <username> with the name of an account on the domain with permissions to access the cluster. Nahraďte <AAD-DOMAIN> s názvem aplikace Azure Active Directory (AAD), ke které je připojený clusteru.Replace <AAD-DOMAIN> with the name of the Azure Active Directory (AAD) that the cluster is joined to. Použít velkých řetězec pro <AAD-DOMAIN> hodnotu, jinak přihlašovací údaje, které nebude nalezena.Use an uppercase string for the <AAD-DOMAIN> value, otherwise the credential won't be found. Zkontrolujte /etc/krb5.conf sféry názvů v případě potřeby.Check /etc/krb5.conf for the realm names if needed.


Prostřednictvím veřejného InternetuOver public internet

Když se připojíte přes veřejný internet, je nutné zadat název účtu přihlášení clusteru (výchozí admin) a heslo.When connecting over the public internet, you must provide the cluster login account name (default admin) and password. Například použití Beeline ze systému klienta pro připojení k <clustername>.azurehdinsight.net adresu.For example, using Beeline from a client system to connect to the <clustername>.azurehdinsight.net address. Toto připojení se provádí přes port 443a je zašifrovaná pomocí SSL:This connection is made over port 443, and is encrypted using SSL:

beeline -u 'jdbc:hive2://clustername.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p password

Parametr clustername nahraďte názvem vašeho clusteru HDInsight.Replace clustername with the name of your HDInsight cluster. Nahraďte admin s účet přihlášení clusteru pro váš cluster.Replace admin with the cluster login account for your cluster. Nahraďte password se heslo pro účet přihlášení clusteru.Replace password with the password for the cluster login account.


Použití Beeline s Apache SparkemUse Beeline with Apache Spark

Apache Spark poskytuje vlastní implementaci serveru HiveServer2, který se někdy označuje jako server Spark Thrift.Apache Spark provides its own implementation of HiveServer2, which is sometimes referred to as the Spark Thrift server. Tato služba překladu místo Hive pomocí Spark SQL a může poskytovat lepší výkon v závislosti na dotazu.This service uses Spark SQL to resolve queries instead of Hive, and may provide better performance depending on your query.

Přes veřejný internet s Apache SparkemOver public internet with Apache Spark

Připojovací řetězec použitý při připojení přes internet se mírně liší.The connection string used when connecting over the internet is slightly different. Anglický httpPath=/hive2 je httpPath/sparkhive2:Instead of containing httpPath=/hive2 it is httpPath/sparkhive2:

beeline -u 'jdbc:hive2://clustername.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/sparkhive2' -n admin -p password

Z clusteru head nebo uvnitř Azure Virtual Network s Apache SparkemFrom cluster head or inside Azure Virtual Network with Apache Spark

Když se připojujete přímo z hlavního uzlu clusteru, nebo z prostředků ve stejné virtuální síti Azure jako HDInsight cluster, přenést 10002 byste měli použít pro server Spark Thrift, nikoli 10001.When connecting directly from the cluster head node, or from a resource inside the same Azure Virtual Network as the HDInsight cluster, port 10002 should be used for Spark Thrift server instead of 10001. Následující příklad ukazuje, jak se připojit přímo k hlavnímu uzlu:The following example shows how to connect directly to the head node:

beeline -u 'jdbc:hive2://headnodehost:10002/;transportMode=http'

PožadavkyPrerequisites

  • Cluster Hadoop v HDInsight.A Hadoop cluster on HDInsight. Zobrazit Začínáme s HDInsight v Linuxu.See Get Started with HDInsight on Linux.

  • Všimněte si, že schéma identifikátoru URI pro váš cluster primárního úložiště.Notice the URI scheme for your cluster's primary storage. Například wasb:// pro službu Azure Storage, abfs:// pro Azure Data Lake Storage Gen2 nebo adl:// pro Azure Data Lake Storage Gen1.For example, wasb:// for Azure Storage, abfs:// for Azure Data Lake Storage Gen2, or adl:// for Azure Data Lake Storage Gen1. Pokud je pro Azure Storage nebo Azure Data Lake Storage Gen2 je povoleno zabezpečený přenos, je identifikátor URI wasbs:// nebo abfss://v uvedeném pořadí.If secure transfer is enabled for Azure Storage or Data Lake Storage Gen2, the URI is wasbs:// or abfss://, respectively. Další informace najdete v tématu zabezpečený přenos.For more information, see secure transfer.

  • Option 1: Klient SSH.Option 1: An SSH client. Další informace najdete v tématu připojení k HDInsight (Apache Hadoop) pomocí protokolu SSH.For more information, see Connect to HDInsight (Apache Hadoop) using SSH. Většina kroků v tomto dokumentu předpokládají, že používáte Beeline z relace SSH do clusteru.Most of the steps in this document assume that you are using Beeline from an SSH session to the cluster.

  • Option 2: Místní Beeline klienta.Option 2: A local Beeline client.

Spuštění dotazu HiveRun a Hive query

Tento příklad je založen na použití Beeline klienta z připojení SSH.This example is based on using the Beeline client from an SSH connection.

  1. Otevřete připojení SSH ke clusteru pomocí kódu níže.Open an SSH connection to the cluster with the code below. Místo sshuser použijte jméno uživatele SSH pro váš cluster a místo CLUSTERNAME zadejte název clusteru.Replace sshuser with the SSH user for your cluster, and replace CLUSTERNAME with the name of your cluster. Po zobrazení výzvy zadejte heslo pro uživatelský účet SSH.When prompted, enter the password for the SSH user account.

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Připojení k serveru HiveServer2 klientem Beeline z otevřít relaci SSH tak, že zadáte následující příkaz:Connect to HiveServer2 with your Beeline client from your open SSH session by entering the following command:

    beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
    
  3. Příkazy beeline začínat ! znak, třeba !help zobrazí nápovědu.Beeline commands begin with a ! character, for example !help displays help. Ale ! může vynechat některé příkazy.However the ! can be omitted for some commands. Například help také funguje.For example, help also works.

    Je !sql, který se používá k provedení příkazy HiveQL.There is a !sql, which is used to execute HiveQL statements. HiveQL se ale tak běžně používá, můžete vynechat předchozí !sql.However, HiveQL is so commonly used that you can omit the preceding !sql. Následující dva příkazy jsou ekvivalentní:The following two statements are equivalent:

    !sql show tables;
    show tables;
    

    Na novém clusteru je uveden pouze jednu tabulku: hivesampletable.On a new cluster, only one table is listed: hivesampletable.

  4. Chcete-li zobrazit schéma pro hivesampletable použijte následující příkaz:Use the following command to display the schema for the hivesampletable:

    describe hivesampletable;
    

    Tento příkaz vrátí následující informace:This command returns the following information:

     +-----------------------+------------+----------+--+
     |       col_name        | data_type  | comment  |
     +-----------------------+------------+----------+--+
     | clientid              | string     |          |
     | querytime             | string     |          |
     | market                | string     |          |
     | deviceplatform        | string     |          |
     | devicemake            | string     |          |
     | devicemodel           | string     |          |
     | state                 | string     |          |
     | country               | string     |          |
     | querydwelltime        | double     |          |
     | sessionid             | bigint     |          |
     | sessionpagevieworder  | bigint     |          |
     +-----------------------+------------+----------+--+
    

    Tyto informace popisují sloupců v tabulce.This information describes the columns in the table.

  5. Zadejte následující příkazy k vytvoření tabulky s názvem log4jLogs pomocí ukázkových dat, které jsou součástí clusteru HDInsight: (Na základě opravit, podle potřeby vaše schéma identifikátoru URI.)Enter the following statements to create a table named log4jLogs by using sample data provided with the HDInsight cluster: (Revise as needed based on your URI scheme.)

    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 'wasbs:///example/data/';
    SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs 
        WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' 
        GROUP BY t4;
    

    Tyto příkazy provádět následující akce:These statements perform the following actions:

    • DROP TABLE – Pokud existuje v tabulce, je odstranit.DROP TABLE - If the table exists, it is deleted.

    • CREATE EXTERNAL TABLE -Vytvoří externí tabulky v Hivu.CREATE EXTERNAL TABLE - Creates an external table in Hive. Externí tabulky pouze uložte definici tabulky Hive.External tables only store the table definition in Hive. Data zůstane v původním umístění.The data is left in the original location.

    • ROW FORMAT -Způsob formátování data.ROW FORMAT - How the data is formatted. V tomto případě pole v každém protokolu jsou oddělené mezerou.In this case, the fields in each log are separated by a space.

    • STORED AS TEXTFILE LOCATION -Pokud jsou data uložená a v jakém formátu souboru.STORED AS TEXTFILE LOCATION - Where the data is stored and in what file format.

    • SELECT – Počet všech řádků vybere kde sloupec t4 obsahuje hodnotu [Chyba] .SELECT - Selects a count of all rows where column t4 contains the value [ERROR]. Tento dotaz vrátí hodnotu 3 jsou tři řádky, které obsahují tuto hodnotu.This query returns a value of 3 as there are three rows that contain this value.

    • INPUT__FILE__NAME LIKE '%.log' -Hive 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 takovém případě adresář obsahuje soubory, které neodpovídají schématu.In this case, the directory contains files that do not match the schema. Chcete-li zabránit uvolňování paměti ve výsledcích, tento příkaz sděluje Hive, že ji by měl vrátit pouze data ze souborů s koncovkou. log.To prevent garbage data in the results, this statement tells Hive that it should only return data from files ending in .log.

    Poznámka

    Pokud očekáváte, že podkladová data aktualizovat externího zdroje je třeba použít externí tabulky.External tables should be used when you expect the underlying data to be updated by an external source. Například automatizovaných datových odesílat operaci MapReduce nebo procesu.For example, an automated data upload process or a MapReduce operation.

    Vyřazení externí tabulky neodpovídá není odstranit data, pouze definici tabulky.Dropping an external table does not delete the data, only the table definition.

    Výstup tohoto příkazu se podobá následujícímu textu:The output of this command is similar to the following text:

     INFO  : Tez session hasn't been created yet. Opening session
     INFO  :
    
     INFO  : Status: Running (Executing on YARN cluster with App id application_1443698635933_0001)
    
     INFO  : Map 1: -/-      Reducer 2: 0/1
     INFO  : Map 1: 0/1      Reducer 2: 0/1
     INFO  : Map 1: 0/1      Reducer 2: 0/1
     INFO  : Map 1: 0/1      Reducer 2: 0/1
     INFO  : Map 1: 0/1      Reducer 2: 0/1
     INFO  : Map 1: 0(+1)/1  Reducer 2: 0/1
     INFO  : Map 1: 0(+1)/1  Reducer 2: 0/1
     INFO  : Map 1: 1/1      Reducer 2: 0/1
     INFO  : Map 1: 1/1      Reducer 2: 0(+1)/1
     INFO  : Map 1: 1/1      Reducer 2: 1/1
     +----------+--------+--+
     |   sev    | count  |
     +----------+--------+--+
     | [ERROR]  | 3      |
     +----------+--------+--+
     1 row selected (47.351 seconds)
    
  6. Chcete-li ukončit Beeline, použijte !exit.To exit Beeline, use !exit.

Spusťte soubor HiveQLRun a HiveQL file

To je pokračováním z předchozího příkladu.This is a continuation from the prior example. Pomocí následujících kroků vytvořte soubor a pak ji spustit pomocí Beeline.Use the following steps to create a file, then run it using Beeline.

  1. Pomocí následujícího příkazu vytvořte soubor s názvem query.hql:Use the following command to create a file named query.hql:

    nano query.hql
    
  2. Použijte následující text jako obsah souboru.Use the following text as the contents of the file. Tento dotaz vytvoří novou tabulku "vnitřní" s názvem nepřenesl:This query creates a new 'internal' table named errorLogs:

    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]' AND INPUT__FILE__NAME LIKE '%.log';
    

    Tyto příkazy provádět následující akce:These statements perform the following actions:

    • Vytvoření tabulky IF NOT EXISTS – Pokud tabulka již neexistuje, vytvoří se.CREATE TABLE IF NOT EXISTS - If the table does not already exist, it is created. Vzhledem k tomu, externí – klíčové slovo se nepoužívá, tento příkaz vytvoří interní tabulku.Since the EXTERNAL keyword is not used, this statement creates an internal table. Interní tabulky jsou uložené v datovém skladu Hive a jsou kompletně spravované pomocí Hive.Internal tables are stored in the Hive data warehouse and are managed completely by Hive.
    • ULOŽENÉ jako ORC – ukládá data ve formátu optimalizované řádek úložiště se sloupcovou strukturou (ORC).STORED AS ORC - Stores the data in Optimized Row Columnar (ORC) format. Formát ORC je vysoce optimalizovaných a efektivní formát pro ukládání dat Hive.ORC format is a highly optimized and efficient format for storing Hive data.
    • VLOŽIT PŘEPSÁNÍ... Vyberte -vybere řádky z log4jLogs tabulce, která obsahuje [Chyba] , pak vloží data do nepřenesl tabulky.INSERT OVERWRITE ... SELECT - Selects rows from the log4jLogs table that contain [ERROR], then inserts the data into the errorLogs table.

    Poznámka

    Na rozdíl od externích tabulek vyřadit interní tabulku odstraní podkladová data.Unlike external tables, dropping an internal table deletes the underlying data as well.

  3. Chcete-li uložit soubor, použijte Ctrl+ _X, zadejte Ya nakonec Enter.To save the file, use Ctrl+_X, then enter Y, and finally Enter.

  4. Pomocí následujících spusťte soubor pomocí Beeline:Use the following to run the file using Beeline:

    beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http' -i query.hql
    

    Poznámka

    -i Parametr spustí Beeline a provede příkazy ve query.hql souboru.The -i parameter starts Beeline and runs the statements in the query.hql file. Po dokončení dotazu se dostanete na jdbc:hive2://headnodehost:10001/> řádku.Once the query completes, you arrive at the jdbc:hive2://headnodehost:10001/> prompt. Můžete také spustit soubor pomocí -f parametr, který ukončí Beeline po dokončení dotazu.You can also run a file using the -f parameter, which exits Beeline after the query completes.

  5. Pro ověření, že nepřenesl byla vytvořena tabulka, použijte následující příkaz vrátí všechny řádky z nepřenesl:To verify that the errorLogs table was created, use the following statement to return all the rows from errorLogs:

    SELECT * from errorLogs;
    

    Tří řádků dat by měla být vrácena, všechny obsahující [Chyba] ve sloupci t4:Three rows of data should be returned, all containing [ERROR] in column t4:

     +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+
     | errorlogs.t1  | errorlogs.t2  | errorlogs.t3  | errorlogs.t4  | errorlogs.t5  | errorlogs.t6  | errorlogs.t7  |
     +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+
     | 2012-02-03    | 18:35:34      | SampleClass0  | [ERROR]       | incorrect     | id            |               |
     | 2012-02-03    | 18:55:54      | SampleClass1  | [ERROR]       | incorrect     | id            |               |
     | 2012-02-03    | 19:25:27      | SampleClass4  | [ERROR]       | incorrect     | id            |               |
     +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+
     3 rows selected (1.538 seconds)
    

Další krokyNext steps

Další obecné informace o Hivu ve službě HDInsight najdete v následujícím dokumentu:For more general information on Hive in HDInsight, see the following document:

Další informace o jiných způsobech mohl pracovat s Hadoop v HDInsight najdete v následujících dokumentech:For more information on other ways you can work with Hadoop on HDInsight, see the following documents: