Integrera Apache Zeppelin med Hive Warehouse Anslut eller i Azure HDInsight
HDInsight Spark-kluster innehåller Apache Zeppelin-notebook-filer med olika tolkar. I den här artikeln fokuserar vi bara på Livy-tolken för att få åtkomst till Hive-tabeller från Spark med Hive Warehouse-Anslut eller.
Kommentar
Den här artikeln innehåller referenser till en term som Microsoft inte längre använder. När termen tas bort från programvaran tar vi bort den från den här artikeln.
Förutsättning
Slutför installationsstegen för Hive Warehouse Anslut eller.
Komma igång
Använd ssh-kommandot för att ansluta till ditt Apache Spark-kluster. Redigera följande kommando genom att ersätta CLUSTERNAME med namnet på klustret och ange sedan kommandot:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Från ssh-sessionen kör du följande kommando för att notera versionerna för
hive-warehouse-connector-assembly
ochpyspark_hwc
:ls /usr/hdp/current/hive_warehouse_connector
Spara utdata för senare användning när du konfigurerar Apache Zeppelin.
Konfigurera Livy
Följande konfigurationer krävs för att komma åt hive-tabeller från Zeppelin med Livy-tolken.
Interaktiv fråga kluster
Från en webbläsare navigerar du till
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs
platsen där LLAPCLUSTERNAME är namnet på ditt Interaktiv fråga kluster.Gå till Avancerad>anpassad kärnwebbplats. Välj Lägg till egenskap... för att lägga till följande konfigurationer:
Konfiguration Värde hadoop.proxyuser.livy.groups * hadoop.proxyuser.livy.hosts * Spara ändringar och starta om alla berörda komponenter.
Spark-kluster
Från en webbläsare navigerar du till
https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs
platsen där CLUSTERNAME är namnet på ditt Apache Spark-kluster.Expandera Anpassad livy2-conf. Välj Lägg till egenskap... för att lägga till följande konfiguration:
Konfiguration Värde livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/ Spara ändringar och starta om alla berörda komponenter.
Konfigurera Livy-tolken i Zeppelin-användargränssnittet (Spark-kluster)
Från en webbläsare går du till
https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter
, därCLUSTERNAME
är namnet på ditt Apache Spark-kluster.Navigera till livy2.
Lägg till följande konfigurationer:
Konfiguration Värde 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
.
Ersätt VERSION med det värde som du fick från Komma igång tidigare.livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip
.
Ersätt VERSION med det värde som du fick från Komma igång tidigare.livy.spark.sql.hive.hiveserver2.jdbc.url Ange den till HiveServer2 Interactive JDBC-URL:en för det Interaktiv fråga klustret. spark.security.credentials.hiveserver2.enabled true Lägg bara till följande konfiguration för ESP-kluster:
Konfiguration Värde livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
Använd ssh-kommandot för att ansluta till ditt Interaktiv fråga kluster. Leta
default_realm
efter parametern/etc/krb5.conf
i filen. Ersätt<AAD-DOMAIN>
med det här värdet som en versalsträng, annars går det inte att hitta autentiseringsuppgifterna.
Spara ändringarna och starta om Livy-tolken.
Om Livy-tolken inte är tillgänglig ändrar du shiro.ini
filen som finns i Zeppelin-komponenten i Ambari. Mer information finns i Konfigurera Apache Zeppelin Security.
Köra frågor i Zeppelin
Starta en Zeppelin-anteckningsbok med Livy-tolken och kör följande
%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()