このページでは、Spark 開発の準備方法について説明します。

E-MapReduce SDK のインストール

以下のどちらかの方法を使用して E-MapReduce SDK をインストールできます。
  • 方法 1 : Eclipse で JAR パッケージを直接使用 以下のステップを実行します。
    1. Mavenリポジトリの E-MapReduce に必要な依存関係をダウンロードします。

    2. 必要なJARファイルをプロジェクトディレクトリにコピーします。 (ジョブを実行するクラスターで使用している Spark のバージョンに基づいて SDK バージョン 2.10 または 2.11 を選択します。 Spark1.x にはバージョン 2.10、Spark2.x には 2.11 が推奨されます)。

    3. Eclipse でプロジェクト名を右クリックし、 [プロパティ] > [Java ビルドパス] > [JAR の追加] をクリックします。

    4. ダウンロードした SDK を選択します。

    5. 上記のステップを完了したら、OSS、Log Service、MNS、ONS、Table Store、および MaxCompute でデータを読み書きできます。

  • 方法 2 : Maven プロジェクトを編集して、以下のとおり依存関係を追加します。
    <! -- Support for OSS data sources -->
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-core</artifactId>
            <version>1.4.1</version>
        </dependency>
        <! -- Support for Table Store data sources -->
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-tablestore</artifactId>
            <version>1.4.1</version>
        </dependency>
        <! -- Support for Message Service (MNS), Open Notification Service (ONS), Log Service, MaxCompute data sources (Spark 1.x environment) -->
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-mns_2.10</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-logservice_2.10</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-maxcompute_2.10</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-ons_2.10</artifactId>
            <version>1.4.1</version>
        </dependency>
        <! -- Support for MNS, ONS, Log Service, MaxCompute data sources (spark 2.x environment) -->
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-mns_2.11</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-logservice_2.11</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-maxcompute_2.11</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.emr</groupId>
            <artifactId>emr-ons_2.11</artifactId>
            <version>1.4.1</version>
        </dependency>

ローカルで Spark コードをデバッグ

spark.hadoop.mapreduce.job.run-local は、Spark が OSS を読み書きするためのデバッグに必要なシナリオ用のプロパティです。 他のシナリオではデフォルト設定を使用します。

OSS の読み書き用に Spark をデバッグする必要がある場合は、 spark.hadoop.mapreduce.job.run-localtrue に設定して SparkConf オブジェクトを設定します。 以下のサンプルコードをご参照ください。
val conf = new SparkConf().setAppName(getAppName).setMaster("local[4]")
   conf.set("spark.hadoop.fs.oss.impl", "com.aliyun.fs.oss.nat.NativeOssFileSystem")
   conf.set("spark.hadoop.mapreduce.job.run-local", "true")
   val sc = new SparkContext(conf) 
   val data = sc.textFile("oss://...")
   println(s"count: ${data.count()}")

サードパーティの依存関係の説明

E-MapReduce が Alibaba Cloud データソース (OSS および MaxCompute など) にアクセスできるようにするには、必要なサードパーティの依存関係をインストールする必要があります。

pom ファイルを参照して必要なサードパーティの依存関係を追加または削除します。

OSS 出力ディレクトリ設定

パラメーター fs.oss.buffer.dirs をローカルの hadoop 設定ファイルに設定します。 パラメーター値はローカルディレクトリパスです。 パラメーター値が設定されていない場合、Spark 実行のプロセス中に OSS データが書き込まれると、NULL ポインタ例外が発生します。

データのクリーンアップ

Spark ジョブが失敗しても、生成されたデータは自動的には削除されません。 ジョブが失敗した場合は、OSS 出力ディレクトリをチェックして、ファイルが存在するかどうか確認します。 サブミットされていないフラグメントについては、OSS フラグメント管理もチェックする必要があります。 見つかったフラグメントを削除します。

PySpark の使用

Python を使用して Spark ジョブを作成する場合は、環境の設定について「注意事項」をご参照ください。