Udostępnij przez


Integrowanie rozwiązania Apache Zeppelin z łącznikiem magazynu Hive 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 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

  1. 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
    
  2. W sesji SSH wykonaj następujące polecenie, aby zanotować wersje dla hive-warehouse-connector-assembly i pyspark_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

Aby uzyskać dostęp do tabel Hive z użyciem interpretera Livy w Zeppelin, wymagane są następujące konfiguracje.

Klaster zapytań interakcyjnych

  1. W przeglądarce internetowej przejdź do https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs gdzie LLAPCLUSTERNAME jest nazwą klastra Interakcyjnych Zapytania.

  2. 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 *
  3. Zapisz zmiany i uruchom ponownie wszystkie objęte składniki.

Klaster Spark

  1. W przeglądarce internetowej przejdź do https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs, gdzie CLUSTERNAME to nazwa twojego klastra Apache Spark.

  2. 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/
  3. Zapisz zmiany i uruchom ponownie wszystkie objęte składniki.

Konfigurowanie interpretera Livy (klaster Spark) w interfejsie użytkownika Zeppelin

  1. Z poziomu przeglądarki internetowej przejdź do https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter, gdzie CLUSTERNAME jest nazwą klastra Apache Spark.

  2. Przejdź do livy2.

  3. 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
  4. 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_realm Wyszukaj parametr w /etc/krb5.conf pliku . Zastąp <AAD-DOMAIN> tę wartością wielkimi literami, w przeciwnym razie nie można odnaleźć poświadczenia.

      Domena AAD łącznika z magazynem Hive.

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

Następne kroki