在 Azure HDInsight 中整合 Apache Zeppelin 與 Hive Warehouse 連線 or
HDInsight Spark 叢集包含具有不同解釋器的 Apache Zeppelin 筆記本。 在本文中,我們只著重於 Livy 解釋器,以使用 Hive Warehouse 連線 or 從 Spark 存取 Hive 數據表。
注意
本文包含 Microsoft 不再使用之字詞的參考。 從軟體中移除該字詞時,我們也會將其從本文中移除。
必要條件
完成 Hive Warehouse Connector 設定步驟。
開始使用
使用 ssh 命令來連線到 Apache Spark 叢集。 將 CLUSTERNAME 取代為您的叢集名稱,然後輸入 命令,以編輯下列命令:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
從您的 ssh 工作階段執行下列命令,以記下 和
pyspark_hwc
的版本hive-warehouse-connector-assembly
:ls /usr/hdp/current/hive_warehouse_connector
儲存輸出以供稍後在設定 Apache Zeppelin 時使用。
設定 Livy
需要下列設定,才能使用 Livy 解釋器從 Zeppelin 存取 Hive 數據表。
互動式查詢叢集
從網頁瀏覽器,流覽至
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs
LLAPCLUSTERNAME 是您互動式查詢叢集的名稱。流覽至 [進階>自定義核心網站]。 選取 [新增屬性... ] 以新增下列組態:
組態 值 hadoop.proxyuser.livy.groups * hadoop.proxyuser.livy.hosts * 儲存變更並重新啟動所有受影響的元件。
Spark 叢集
從網頁瀏覽器,流覽至
https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs
CLUSTERNAME是您Apache Spark 叢集的名稱。展開 [自定義 livy2-conf]。 選取 [新增屬性... ] 以新增下列組態:
組態 值 livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/ 儲存變更並重新啟動所有受影響的元件。
在 Zeppelin UI 中設定 Livy 解釋器 (Spark 叢集)
從網頁瀏覽器流覽至
https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter
,其中CLUSTERNAME
是 Apache Spark 叢集的名稱。流覽至 livy2。
新增下列組態:
組態 值 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 僅適用於 ESP 叢集,新增下列設定:
組態 值 livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
使用 ssh 命令 連線到您的互動式查詢叢集。 在檔案中
/etc/krb5.conf
尋找default_realm
參數。 將 取代<AAD-DOMAIN>
為此值作為大寫字串,否則找不到認證。
儲存變更並重新啟動 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()