Azure HDInsight で Apache Zeppelin と Hive Warehouse Connector を統合する

HDInsight Spark クラスターには、異なるインタープリターを持つ Apache Zeppelin Notebook が含まれています。 この記事では、Hive Warehouse Connector を使用して Spark から Hive テーブルにアクセスする Livy インタープリターのみに焦点を当てます。

Note

この記事には、Microsoft が使用しなくなった用語への言及が含まれています。 ソフトウェアからこの用語が削除された時点で、この記事から削除します。

前提条件

Hive Warehouse Connector の設定ステップを完了します。

作業の開始

  1. ssh コマンドを使用して Apache Spark クラスターに接続します。 CLUSTERNAME をクラスターの名前に置き換えて、次のコマンドを編集し、コマンドを入力します:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. SSH セッションから次のコマンドを実行して、hive-warehouse-connector-assemblypyspark_hwc のバージョンを確認します。

    ls /usr/hdp/current/hive_warehouse_connector
    

    後で Apache Zeppelin を構成するときに使用するために、出力を保存します。

Livy を構成する

Livy インタープリターを使用して Zeppelin から Hive テーブルにアクセスするには、次の構成が必要です。

対話型クエリ クラスター

  1. Web ブラウザーから、https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs に移動します。ここで、LLAPCLUSTERNAME は対話型クエリ クラスターの名前です。

  2. [詳細]>[カスタム core-site] の順に移動します。 [プロパティの追加...] を選択して、次の構成を追加します。

    構成
    hadoop.proxyuser.livy.groups *
    hadoop.proxyuser.livy.hosts *
  3. 変更を保存し、影響を受けるすべてのコンポーネントを再起動します。

Spark クラスター

  1. Web ブラウザーから、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. Web ブラウザーから、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 コマンドを使用して Interactive Query クラスターに接続します。 /etc/krb5.conf ファイルで default_realm パラメーターを探します。 <AAD-DOMAIN> を大文字の文字列としてこの値に置き換えます。そうしないと、資格情報が見つかりません。

      hive warehouse connector AAD Domain.

  5. 変更を保存し、Livy インタープリターを再起動します。

Livy インタープリターがアクセスできない場合、Ambari の Zeppelin コンポーネント内に存在する shiro.ini ファイルを変更します。 詳細については、Apache Zeppelin Security の構成に関するページをご覧ください。

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

次のステップ