Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klastry HDInsight Spark obejmują notesy Apache Zeppelin z różnymi interpreterami. W tym artykule skoncentrujemy się tylko na interpreterze usługi Livy w celu uzyskania dostępu do tabel Hive z użyciem Spark przy użyciu łącznika magazynowego 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 łącznika Hive Warehouse.
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.netW sesji SSH wykonaj następujące polecenie, aby zanotować wersje dla
hive-warehouse-connector-assemblyipyspark_hwc:ls /usr/hdp/current/hive_warehouse_connectorZapisz dane wyjściowe do późniejszego użycia podczas konfigurowania rozwiązania Apache Zeppelin.
Konfigurowanie usługi Livy
Aby uzyskać dostęp do tabel Hive z użyciem interpretera Livy w Zeppelin, wymagane są następujące konfiguracje.
Klaster zapytań interakcyjnych
W przeglądarce internetowej przejdź do
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configsgdzie LLAPCLUSTERNAME jest nazwą klastra Interakcyjnych Zapytania.Przejdź do obszaru Zaawansowana>niestandardowa lokacja podstawowa. Wybierz pozycję Dodaj właściwość... aby dodać następujące konfiguracje:
Konfiguracja 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, gdzie CLUSTERNAME to nazwa twojego klastra Apache Spark.Rozwiń Custom livy2-conf. Wybierz pozycję Dodaj właściwość... , aby dodać następującą konfigurację:
Konfiguracja Wartość livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/ Zapisz zmiany i uruchom ponownie wszystkie objęte składniki.
Konfigurowanie interpretera Livy (klaster Spark) w interfejsie użytkownika Zeppelin
Z poziomu przeglądarki internetowej przejdź do
https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter, gdzieCLUSTERNAMEjest nazwą klastra Apache Spark.Przejdź do livy2.
Dodaj następujące konfiguracje:
Konfiguracja 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 VERSION wartością uzyskaną z części Wprowadzenie, opisanej wcześniej.livy.spark.sql.hive.hiveserver2.jdbc.url Ustaw go na adres URL JDBC dla klastra zapytań interaktywnych HiveServer2. spark.security.credentials.hiveserver2.enabled prawda Tylko w przypadku klastrów ESP dodaj następującą konfigurację:
Konfiguracja 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_realmWyszukaj parametr w/etc/krb5.confpliku . Zastąp<AAD-DOMAIN>tę wartością wielkimi literami, w przeciwnym razie nie można odnaleźć poświadczenia.
Zapisz zmiany i uruchom ponownie interpreter Livy.
Jeśli interpreter usługi Livy nie jest dostępny, zmodyfikuj plik shiro.ini znajdujący się w składniku Zeppelin w narzędziu Ambari. Aby uzyskać więcej informacji, zobacz Konfigurowanie zabezpieczeń apache Zeppelin.
Uruchamianie zapytań w Zeppelinie
Uruchom notatnik Zeppelin przy użyciu interpretera usługi Livy i wykonaj następujące
%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()