Share via


Integrieren von Apache Zeppelin mit Hive Warehouse Connector in Azure HDInsight

HDInsight Spark-Cluster enthalten Apache Zeppelin-Notebooks mit verschiedenen Interpretern. In diesem Artikel wird überwiegend der Livy-Interpreter für den Zugriff auf Hive-Tabellen über Spark mit Hive Warehouse Connector behandelt.

Hinweis

In diesem Artikel wird ein Begriff verwendet, der von Microsoft nicht mehr genutzt wird. Sobald der Begriff aus der Software entfernt wurde, wird er auch aus diesem Artikel entfernt.

Voraussetzung

Schließen Sie die Schritte für das Hive Warehouse Connector-Setup ab.

Erste Schritte

  1. Verwenden Sie den Befehl ssh, um eine Verbindung mit Ihrem Apache Spark-Cluster herzustellen. Bearbeiten Sie den folgenden Befehl, indem Sie CLUSTERNAME durch den Namen Ihres Clusters ersetzen, und geben Sie den Befehl dann ein:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Führen Sie in Ihrer SSH-Sitzung den folgenden Befehl aus, und notieren Sie sich die Versionen von hive-warehouse-connector-assembly und pyspark_hwc:

    ls /usr/hdp/current/hive_warehouse_connector
    

    Speichern Sie die Ausgabe zur späteren Verwendung für die Konfiguration von Apache Zeppelin.

Konfigurieren von Livy

Die folgenden Konfigurationen sind für den Zugriff auf Hive-Tabellen über Zeppelin mit dem Livy-Interpreter erforderlich.

Interactive Query-Cluster

  1. Öffnen Sie https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs in einer Webbrowser. Ersetzen Sie LLAPCLUSTERNAME dabei durch den Namen Ihres Interactive Query-Clusters.

  2. Navigieren Sie zu Advanced>Custom core-site (Erweitert > Benutzerdefinierte Hauptwebsite). Klicken Sie auf Add Property... (Eigenschaft hinzufügen), um die folgenden Konfigurationen hinzuzufügen:

    Konfiguration Wert
    hadoop.proxyuser.livy.groups *
    hadoop.proxyuser.livy.hosts *
  3. Speichern Sie die Änderungen, und starten Sie alle betroffenen Komponenten neu.

Spark-Cluster

  1. Öffnen Sie https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs in einem Webbrowser. Ersetzen Sie dabei CLUSTERNAME durch den Namen Ihres Apache Spark-Clusters.

  2. Erweitern Sie Custom livy2-conf. Klicken Sie auf Add Property... (Eigenschaft hinzufügen), um die folgende Konfiguration hinzuzufügen:

    Konfiguration Wert
    livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/
  3. Speichern Sie die Änderungen, und starten Sie alle betroffenen Komponenten neu.

Konfigurieren des Livy-Interpreters über die Zeppelin-Benutzeroberfläche (Spark-Cluster)

  1. Öffnen Sie https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter in einem Webbrowser. Ersetzen Sie dabei CLUSTERNAME durch den Namen Ihres Apache Spark-Clusters.

  2. Navigieren Sie zu livy2.

  3. Fügen Sie die folgenden Konfigurationen hinzu:

    Konfiguration Wert
    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.
    Ersetzen Sie VERSION durch den Wert, den Sie zuvor im Abschnitt Erste Schritte abgerufen haben.
    livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip.
    Ersetzen Sie VERSION durch den Wert, den Sie zuvor im Abschnitt Erste Schritte abgerufen haben.
    livy.spark.sql.hive.hiveserver2.jdbc.url Legen Sie für diese Konfiguration die HiveServer2 Interactive JDBC-URL des Interactive Query-Clusters fest.
    spark.security.credentials.hiveserver2.enabled true
  4. Fügen Sie nur für ESP-Cluster die folgende Konfiguration hinzu:

    Konfiguration Wert
    livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
    • Verwenden Sie den Befehl „ssh“, um eine Verbindung mit Ihrem Interactive Query-Cluster herzustellen. Suchen Sie in der Datei /etc/krb5.conf nach dem Parameter default_realm. Ersetzen Sie <AAD-DOMAIN> durch diesen Wert als Zeichenfolge in Großbuchstaben, da die Anmeldeinformationen andernfalls nicht gefunden werden.

      hive warehouse connector AAD Domain.

  5. Speichern Sie die Änderungen, und starten Sie den Livy-Interpreter neu.

Wenn der Livy-Interpreter nicht verfügbar ist, passen Sie die shiro.ini-Datei an, die in der Zeppelin-Komponente in Ambari vorhanden ist. Weitere Informationen finden Sie unter Konfigurieren der Apache Zeppelin-Sicherheit.

Ausführen von Abfragen in Zeppelin

Starten Sie ein Zeppelin-Notebook mithilfe des Livy-Interpreters, und führen Sie Folgendes aus:

%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ächste Schritte