HDInsight の Apache Spark クラスターの Jupyter Notebook で外部のパッケージを使用する

HDInsight 上の Apache Spark クラスター内の Jupyter Notebook を、そのクラスターに標準では含まれていない、コミュニティから提供された外部の Apache maven パッケージを使用するように構成する方法について説明します。

利用できるすべてのパッケージは、 Maven リポジトリ で検索できます。 公開されているパッケージの一覧を他のソースから入手してもかまいません。 たとえば、コミュニティから提供されている全パッケージの一覧を Spark Packagesで入手できます。

この記事では、Jupyter Notebook で spark-csv パッケージを使用する方法について説明します。

前提条件

Jupyter Notebook で外部のパッケージを使用する

  1. https://CLUSTERNAME.azurehdinsight.net/jupyter に移動します。CLUSTERNAME はご自身の Spark クラスターの名前です。

  2. 新しい Notebook を作成します。 [新規] を選択した後、[Spark] を選択します。

    新しい Spark Jupyter Notebook を作成します。

  3. Untitled.pynb という名前の新しい Notebook が作成されて開かれます。 上部のノートブック名を選択し、わかりやすい名前を入力します。

    Notebook の名前を指定します。

  4. 外部のパッケージを使用するようにノートブックを構成するには、%%configure マジックを使用します。 外部のパッケージを使用するノートブックでは必ず、最初のコード セルで %%configure マジックを呼び出すようにしてください。 そうすることでセッションが開始される前に、指定のパッケージを使用するようにカーネルが構成されます。

    重要

    最初のセルでカーネルを構成しなかった場合、-f パラメーターを指定して %%configure を使用できますが、その場合セッションが最初からやり直しとなり、すべての進捗が失われます。

    HDInsight のバージョン コマンド
    HDInsight 3.5 および HDInsight 3.6 %%configure
    { "conf": {"spark.jars.packages": "com.databricks:spark-csv_2.11:1.5.0" }}
    HDInsight 3.3 および HDInsight 3.4 %%configure
    { "packages":["com.databricks:spark-csv_2.10:1.4.0"] }
  5. 上のスニペットには、Maven Central Repository における外部パッケージの maven コーディネートを指定します。 このスニペットの com.databricks:spark-csv_2.11:1.5.0 は、 spark-csv パッケージの maven コーディネートです。 パッケージのコーディネートは、以下の方法で構築します。

    a. Maven リポジトリから目的のパッケージを探します。 この記事では spark-csv を使用します。

    b. リポジトリで GroupIdArtifactIdVersion の値を確認します。 収集した値が、クラスターに一致することを確認します。 この例では、Scala 2.11 と Spark 1.5.0 パッケージを使用していますが、クラスター内の Scala または Spark のバージョンに応じて別のバージョンを選択しなければならないことがあります。 クラスター上の Scala のバージョンを確認するには、Spark Jupyter カーネルまたは Spark 送信に対して scala.util.Properties.versionString を実行します。 クラスター上の Spark のバージョンを確認するには、Jupyter Notebook に対して sc.version を実行します。

    Jupyter Notebook で外部のパッケージを使います。

    c. 3 つの値をコロン ( : ) で区切って連結します。

    com.databricks:spark-csv_2.11:1.5.0
    
  6. %%configure マジックのコード セルを実行します。 これで、指定したパッケージを使用するように基になる Livy セッションが構成されます。 これでノートブック内の後続セルで、指定したパッケージを使用できるようになります (以下の例を参照)。

    val df = spark.read.format("com.databricks.spark.csv").
    option("header", "true").
    option("inferSchema", "true").
    load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    

    HDInsight 3.4 以下の場合、次のスニペットをご利用ください。

    val df = sqlContext.read.format("com.databricks.spark.csv").
    option("header", "true").
    option("inferSchema", "true").
    load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
  7. 前の手順で作成したデータフレームからのデータは、以下のスニペットで表示できます。

    df.show()
    
    df.select("Time").count()
    

関連項目

シナリオ

アプリケーションの作成と実行

ツールと拡張機能

リソースの管理