在 Azure HDInsight 中整合 Apache Zeppelin 與 Hive Warehouse 連線 or

HDInsight Spark 叢集包含具有不同解釋器的 Apache Zeppelin 筆記本。 在本文中,我們只著重於 Livy 解釋器,以使用 Hive Warehouse 連線 or 從 Spark 存取 Hive 數據表。

注意

本文包含 Microsoft 不再使用之字詞的參考。 從軟體中移除該字詞時,我們也會將其從本文中移除。

必要條件

完成 Hive Warehouse Connector 設定步驟。

開始使用

  1. 使用 ssh 命令來連線到 Apache Spark 叢集。 將 CLUSTERNAME 取代為您的叢集名稱,然後輸入 命令,以編輯下列命令:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. 從您的 ssh 工作階段執行下列命令,以記下 和 pyspark_hwc的版本hive-warehouse-connector-assembly

    ls /usr/hdp/current/hive_warehouse_connector
    

    儲存輸出以供稍後在設定 Apache Zeppelin 時使用。

設定 Livy

需要下列設定,才能使用 Livy 解釋器從 Zeppelin 存取 Hive 數據表。

互動式查詢叢集

  1. 從網頁瀏覽器,流覽至 https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs LLAPCLUSTERNAME 是您互動式查詢叢集的名稱。

  2. 流覽至 [進階>自定義核心網站]。 選取 [新增屬性... ] 以新增下列組態:

    組態
    hadoop.proxyuser.livy.groups *
    hadoop.proxyuser.livy.hosts *
  3. 儲存變更並重新啟動所有受影響的元件。

Spark 叢集

  1. 從網頁瀏覽器,流覽至 https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs CLUSTERNAME是您Apache Spark 叢集的名稱。

  2. 展開 [自定義 livy2-conf]。 選取 [新增屬性... ] 以新增下列組態:

    組態
    livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/
  3. 儲存變更並重新啟動所有受影響的元件。

在 Zeppelin UI 中設定 Livy 解釋器 (Spark 叢集)

  1. 從網頁瀏覽器流覽至 https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter,其中 CLUSTERNAME 是 Apache Spark 叢集的名稱。

  2. 流覽至 livy2

  3. 新增下列組態:

    組態
    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.
    將 VERSION 取代為您稍早從 用戶入門取得的值。
    livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip.
    將 VERSION 取代為您稍早從 用戶入門取得的值。
    livy.spark.sql.hive.hiveserver2.jdbc.url 將它設定為互動式查詢叢集的HiveServer2互動式 JDBC URL。
    spark.security.credentials.hiveserver2.enabled true
  4. 僅適用於 ESP 叢集,新增下列設定:

    組態
    livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
    • 使用 ssh 命令 連線到您的互動式查詢叢集。 在檔案中/etc/krb5.conf尋找 default_realm 參數。 將 取代 <AAD-DOMAIN> 為此值作為大寫字串,否則找不到認證。

      hive warehouse connector AAD Domain.

  5. 儲存變更並重新啟動 Livy 解釋器。

如果無法存取 Livy 解釋器,請修改 shiro.ini Ambari 中 Zeppelin 元件內的檔案。 如需詳細資訊,請參閱 設定 Apache Zeppelin 安全性

在 Zeppelin 中執行查詢

使用 Livy 解釋器啟動 Zeppelin Notebook,然後執行下列命令

%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()

下一步