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

  1. 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
    
  2. Från ssh-sessionen kör du följande kommando för att notera versionerna för hive-warehouse-connector-assembly och pyspark_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

  1. 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.

  2. 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 *
  3. Spara ändringar och starta om alla berörda komponenter.

Spark-kluster

  1. 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.

  2. 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/
  3. Spara ändringar och starta om alla berörda komponenter.

Konfigurera Livy-tolken i Zeppelin-användargränssnittet (Spark-kluster)

  1. Från en webbläsare går du till https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter, där CLUSTERNAME är namnet på ditt Apache Spark-kluster.

  2. Navigera till livy2.

  3. 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
  4. 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.

      hive warehouse connector AAD Domain.

  5. 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()

Nästa steg