Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 Connector.
Anmärkning
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 stegen för att sätta upp Hive Warehouse Connector.
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.netFrån ssh-sessionen kör du följande kommando för att notera versionerna för
hive-warehouse-connector-assemblyochpyspark_hwc:ls /usr/hdp/current/hive_warehouse_connectorSpara 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-tolk.
Interaktivt frågekluster
Från en webbläsare navigerar du till
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configsdär LLAPCLUSTERNAME är namnet på ditt interaktiva frågekluster.Gå till Advanced>Custom Core-site. 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/configsplatsen där CLUSTERNAME är namnet på ditt Apache Spark-kluster.Expandera Custom 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 sann livy.spark.sql.hive.llap sann livy.spark.yarn.security.credentials.hiveserver2.enabled sann 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 hämtade tidigare från avsnittet Komma igång.livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip.
Ersätt VERSION med det värde som du hämtade från Komma igångtidigare.livy.spark.sql.hive.hiveserver2.jdbc.url Ange den till HiveServer2 Interactive JDBC-URL:en för det interaktiva frågeklustret. spark.security.credentials.hiveserver2.enabled sann 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 efter
default_realmparametern i/etc/krb5.conffilen. 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 filen shiro.ini som finns i Zeppelin-komponenten i Ambari. Mer information finns i Konfigurera Apache Zeppelin Security.
Köra sökfrå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()