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
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
Führen Sie in Ihrer SSH-Sitzung den folgenden Befehl aus, und notieren Sie sich die Versionen von
hive-warehouse-connector-assembly
undpyspark_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
Öffnen Sie
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs
in einer Webbrowser. Ersetzen Sie LLAPCLUSTERNAME dabei durch den Namen Ihres Interactive Query-Clusters.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 * Speichern Sie die Änderungen, und starten Sie alle betroffenen Komponenten neu.
Spark-Cluster
Öffnen Sie
https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs
in einem Webbrowser. Ersetzen Sie dabei CLUSTERNAME durch den Namen Ihres Apache Spark-Clusters.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/ Speichern Sie die Änderungen, und starten Sie alle betroffenen Komponenten neu.
Konfigurieren des Livy-Interpreters über die Zeppelin-Benutzeroberfläche (Spark-Cluster)
Öffnen Sie
https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter
in einem Webbrowser. Ersetzen Sie dabeiCLUSTERNAME
durch den Namen Ihres Apache Spark-Clusters.Navigieren Sie zu livy2.
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 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 Parameterdefault_realm
. Ersetzen Sie<AAD-DOMAIN>
durch diesen Wert als Zeichenfolge in Großbuchstaben, da die Anmeldeinformationen andernfalls nicht gefunden werden.
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()