Integrowanie rozwiązania Apache Zeppelin z usługą Hive Warehouse Połączenie or w usłudze Azure HDInsight
Klastry HDInsight Spark obejmują notesy Apache Zeppelin z różnymi interpreterami. W tym artykule skoncentrujemy się tylko na interpreterze usługi Livy, aby uzyskać dostęp do tabel hive z platformy Spark przy użyciu Połączenie or magazynu Hive.
Uwaga
Ten artykuł zawiera odwołania do terminu, którego firma Microsoft już nie używa. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.
Warunek wstępny
Wykonaj kroki konfiguracji programu Hive Warehouse Połączenie or.
Wprowadzenie
Użyj polecenia ssh, aby nawiązać połączenie z klastrem Apache Spark. Zmodyfikuj następujące polecenie, zastępując ciąg CLUSTERNAME nazwą klastra, a następnie wprowadź polecenie:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
W sesji SSH wykonaj następujące polecenie, aby zanotować wersje dla
hive-warehouse-connector-assembly
ipyspark_hwc
:ls /usr/hdp/current/hive_warehouse_connector
Zapisz dane wyjściowe do późniejszego użycia podczas konfigurowania rozwiązania Apache Zeppelin.
Konfigurowanie usługi Livy
Do uzyskiwania dostępu do tabel hive zeppelin przy użyciu interpretera usługi Livy wymagane są następujące konfiguracje.
Klaster zapytań interakcyjnych
W przeglądarce internetowej przejdź do
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs
lokalizacji LLAPCLUSTERNAME jest nazwą klastra interakcyjnego zapytań.Przejdź do obszaru Zaawansowana>niestandardowa lokacja podstawowa. Wybierz pozycję Dodaj właściwość... aby dodać następujące konfiguracje:
Konfigurowanie Wartość hadoop.proxyuser.livy.groups * hadoop.proxyuser.livy.hosts * Zapisz zmiany i uruchom ponownie wszystkie objęte składniki.
Klaster Spark
W przeglądarce internetowej przejdź do
https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs
lokalizacji CLUSTERNAME to nazwa klastra Apache Spark.Rozwiń węzeł Custom livy2-conf. Wybierz pozycję Dodaj właściwość... , aby dodać następującą konfigurację:
Konfigurowanie Wartość livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/ Zapisz zmiany i uruchom ponownie wszystkie objęte składniki.
Konfigurowanie interpretera usługi Livy w interfejsie użytkownika zeppelin (klaster Spark)
W przeglądarce internetowej przejdź do
https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter
adresu , gdzieCLUSTERNAME
jest nazwą klastra Apache Spark.Przejdź do usługi livy2.
Dodaj następujące konfiguracje:
Konfigurowanie Wartość livy.spark.hadoop.hive.llap.daemon.service.hosts @llap0 livy.spark.security.credentials.hiveserver2.enabled prawda livy.spark.sql.hive.llap prawda livy.spark.yarn.security.credentials.hiveserver2.enabled prawda livy.superusers livy, zeppelin livy.spark.jars file:///usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-VERSION.jar
.
Zastąp ciąg VERSION wartością uzyskaną we wcześniejszej sekcji Wprowadzenie.livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip
.
Zastąp ciąg VERSION wartością uzyskaną we wcześniejszej sekcji Wprowadzenie.livy.spark.sql.hive.hiveserver2.jdbc.url Ustaw go na adres URL Interakcyjnego zestawu zapytań HiveServer2 interaktywnego klastra zapytań JDBC. spark.security.credentials.hiveserver2.enabled prawda Tylko w przypadku klastrów ESP dodaj następującą konfigurację:
Konfigurowanie Wartość livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
Użyj polecenia SSH, aby nawiązać połączenie z klastrem Interactive Query.
default_realm
Wyszukaj parametr w/etc/krb5.conf
pliku . Zastąp<AAD-DOMAIN>
ciąg tą wartością wielkimi literami. W przeciwnym razie nie można odnaleźć poświadczeń.
Zapisz zmiany i uruchom ponownie interpreter usługi Livy.
Jeśli interpreter usługi Livy nie jest dostępny, zmodyfikuj plik znajdujący się w składniku Zeppelin w narzędziu shiro.ini
Ambari. Aby uzyskać więcej informacji, zobacz Konfigurowanie zabezpieczeń apache Zeppelin.
Uruchamianie zapytań w rozwiązaniu Zeppelin
Uruchom notes Zeppelin przy użyciu interpretera usługi Livy i wykonaj następujące czynności
%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()