Partilhar via


Integrar o Apache Zeppelin com o Hive Warehouse Connector no Azure HDInsight

Os clusters do HDInsight Spark incluem notebooks Apache Zeppelin com diferentes intérpretes. Neste artigo, nos concentramos apenas no interpretador Livy para acessar tabelas do Hive a partir do Spark usando o Hive Warehouse Connector.

Observação

Este artigo contém referências a um termo que a Microsoft já não utiliza. Quando o termo for removido do software, iremos removê-lo deste artigo.

Pré-requisito

Conclua as etapas de configuração do Hive Warehouse Connector.

Como Começar

  1. Use o comando ssh para se conectar ao cluster do Apache Spark. Edite o seguinte comando substituindo CLUSTERNAME pelo nome do cluster e digite o comando:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Na sessão ssh, execute o seguinte comando para anotar as versões de hive-warehouse-connector-assembly e pyspark_hwc:

    ls /usr/hdp/current/hive_warehouse_connector
    

    Salve a saída para uso posterior ao configurar o Apache Zeppelin.

Configurar o Livy

As configurações a seguir são necessárias para acessar as tabelas de hive do Zeppelin com o interpretador Livy.

Cluster de consulta interativo

  1. Em um navegador da Web, navegue até https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs, onde LLAPCLUSTERNAME é o nome do cluster de Consulta Interativa.

  2. Navegue até> AvançadoNúcleo personalizado. Selecione Adicionar propriedade... para adicionar as seguintes configurações:

    Configuração Valor
    hadoop.proxyuser.livy.groups *
    hadoop.proxyuser.livy.hosts *
  3. Salve as alterações e reinicie todos os componentes afetados.

Aglomerado de faíscas

  1. Em um navegador da Web, navegue até https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs onde CLUSTERNAME é o nome do cluster do Apache Spark.

  2. Expanda o Custom livy2-conf. Selecione Adicionar propriedade... para adicionar a seguinte configuração:

    Configuração Valor
    livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/
  3. Salve as alterações e reinicie todos os componentes afetados.

Configurar o Livy Interpreter na interface do usuário do Zeppelin (Spark Cluster)

  1. Em um navegador da Web, navegue até https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter, onde CLUSTERNAME é o nome do cluster do Apache Spark.

  2. Navegue até livy2.

  3. Adicione as seguintes configurações:

    Configuração Valor
    livy.spark.hadoop.hive.llap.daemon.service.hosts @llap0
    livy.spark.security.credentials.hiveserver2.enabled verdadeiro
    livy.spark.sql.hive.llap verdadeiro
    livy.spark.yarn.security.credentials.hiveserver2.enabled verdadeiro
    livy.superutilizadores Lívio, Zeppelin
    livy.spark.jars file:///usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-VERSION.jar.
    Substitua VERSION pelo valor anteriormente obtido em Introdução.
    livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip.
    Substitua VERSION pelo valor obtido em Introdução, anteriormente.
    livy.spark.sql.hive.hiveserver2.jdbc.url Defina-o como a URL JDBC interativa do HiveServer2 do cluster de consulta interativa.
    spark.security.credentials.hiveserver2.enabled verdadeiro
  4. Apenas para clusters ESP, adicione a seguinte configuração:

    Configuração Valor
    livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
    • Utilize o comando ssh para se conectar ao cluster de Consulta Interativa. Procure o parâmetro default_realm no ficheiro /etc/krb5.conf. Substitua <AAD-DOMAIN> por esse valor como uma cadeia de caracteres maiúscula, caso contrário, a credencial não poderá ser encontrada.

      hive warehouse connector AAD Domínio.

  5. Salve as alterações e reinicie o intérprete Livy.

Se o interpretador Livy não estiver disponível, modifique o arquivo shiro.ini presente no componente Zeppelin no Ambari. Para obter mais informações, consulte Configurando a segurança do Apache Zeppelin.

Executando consultas no Zeppelin

Inicie um notebook do Zeppelin usando o interpretador Livy e execute o seguinte

%livy2

import com.hortonworks.hwc.HiveWarehouseSession
import com.hortonworks.hwc.HiveWarehouseSession._
import org.apache.spark.sql.SaveMode

# Initialize the hive context
val hive = HiveWarehouseSession.session(spark).build()

# Create a database
hive.createDatabase("hwc_db",true)
hive.setDatabase("hwc_db")

# Create a Hive table
hive.createTable("testers").ifNotExists().column("id", "bigint").column("name", "string").create()

val dataDF = Seq( (1, "foo"), (2, "bar"), (8, "john")).toDF("id", "name")

# Validate writes to the table
dataDF.write.format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector").mode("append").option("table", "hwc_db.testers").save()

# Validate reads
hive.executeQuery("select * from testers").show()

Próximos passos