Integrare Apache Zeppelin con Hive Warehouse Connector in Azure HDInsight
I cluster HDInsight Spark includono i notebook Apache Zeppelin con diversi interpreti. In questo articolo viene illustrato solo l'interprete Livy per accedere alle tabelle Hive da Spark usando Hive Warehouse Connessione or.
Nota
Questo articolo contiene riferimenti a un termine che Microsoft non usa più. Quando il termine verrà rimosso dal software, verrà rimosso anche dall'articolo.
Prerequisito
Completare la procedura di configurazione di Hive Warehouse Connector.
Introduzione
Usare il comando ssh per connettersi al cluster Apache Spark. Modificare il comando seguente sostituendo CLUSTERNAME con il nome del cluster e quindi immettere il comando :
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Nella sessione ssh eseguire il comando seguente per prendere nota delle versioni per
hive-warehouse-connector-assembly
epyspark_hwc
:ls /usr/hdp/current/hive_warehouse_connector
Salvare l'output per usarlo in seguito durante la configurazione di Apache Zeppelin.
Configurare Livy
Le configurazioni seguenti sono necessarie per accedere alle tabelle di Hive da Zeppelin con l'interprete Livy.
Cluster Interactive Query
In un Web browser passare a
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs
, dove LLAPCLUSTERNAME è il nome del cluster Interactive Query.Passare a Advanced (Avanzate)>Custom core-site (Impostazioni core-site personalizzate). Selezionare Add Property (Aggiungi proprietà) per aggiungere le configurazioni seguenti:
Impostazione Valore hadoop.proxyuser.livy.groups * hadoop.proxyuser.livy.hosts * Salvare le modifiche e riavviare tutti i componenti interessati.
Cluster Spark
In un Web browser passare a
https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs
, dove CLUSTERNAME è il nome del cluster Apache Spark.Espandere Custom livy2-conf (Configurazione livy2 personalizzata). Selezionare Add Property... (Aggiungi proprietà...) per aggiungere le configurazioni seguenti:
Impostazione Valore livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/ Salvare le modifiche e riavviare tutti i componenti interessati.
Configurare l'interprete Livy nell'interfaccia utente di Zeppelin (cluster Spark)
In un Web browser passare a
https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter
, doveCLUSTERNAME
è il nome del cluster Apache Spark.Passare a livy2.
Aggiungere le configurazioni seguenti:
Impostazione Valore livy.spark.hadoop.hive.llap.daemon.service.hosts @llap0 livy.spark.security.credentials.hiveserver2.enabled true livy.spark.sql.hive.llap true livy.spark.yarn.security.credentials.hiveserver2.enabled true livy.superusers livy, zeppelin livy.spark.jars file:///usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-VERSION.jar
.
Sostituire VERSION con il valore ottenuto nella Guida introduttiva precedente.livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip
.
Sostituire VERSION con il valore ottenuto nella Guida introduttiva precedente.livy.spark.sql.hive.hiveserver2.jdbc.url Impostarlo sull'URL JDBC interattivo per HiveServer2 del cluster Interactive query. spark.security.credentials.hiveserver2.enabled true Solo per i cluster ESP, aggiungere la configurazione seguente:
Impostazione Valore livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
Usare il comando ssh per connettersi al cluster Interactive Query.
default_realm
Cercare il/etc/krb5.conf
parametro nel file. Sostituire<AAD-DOMAIN>
con questo valore come stringa maiuscola. In caso contrario, non è possibile trovare le credenziali.
Salvare le modifiche e riavviare l'interprete Livy.
Se l'interprete Livy non è accessibile, modificare il file shiro.ini
presente nel componente Zeppelin in Ambari. Per altre informazioni, vedere Configurare la sicurezza di Apache Zeppelin.
Esecuzione di query in Zeppelin
Avviare un notebook Zeppelin con l'interprete Livy ed eseguire le operazioni seguenti
%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()