すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:spark-submit コマンドラインインターフェイス (CLI) を使用した Spark ジョブの送信

最終更新日:Feb 12, 2026

このトピックでは、ECS インスタンスを EMR Serverless Spark に接続し、EMR Serverless spark-submit コマンドラインインターフェイス (CLI) を使用して Spark ジョブを開発する方法について説明します。

前提条件

  • Java 1.8 以降がインストールされている必要があります。

  • RAM ユーザーを使用して Spark ジョブを送信する場合は、その RAM ユーザーを Serverless Spark ワークスペースに追加し、Developer ロール以上の権限を付与する必要があります。詳細については、「ユーザーとロールの管理」をご参照ください。

操作手順

ステップ 1:EMR Serverless spark-submit CLI のダウンロードとインストール

  1. emr-serverless-spark-tool-0.11.3-SNAPSHOT-bin.zip をクリックして、インストールパッケージをダウンロードします。

  2. インストールパッケージをご利用の ECS インスタンスにアップロードします。詳細については、「ファイルのアップロードまたはダウンロード」をご参照ください。

  3. 次のコマンドを実行して、EMR Serverless spark-submit CLI を解凍・インストールします。

    unzip emr-serverless-spark-tool-0.11.3-SNAPSHOT-bin.zip

ステップ 2:パラメーターの設定

重要

Spark 対応環境で SPARK_CONF_DIR 環境変数が設定されている場合、構成ファイルを SPARK_CONF_DIR で指定されたディレクトリに配置してください。たとえば、EMR クラスターでは、このディレクトリは通常 /etc/taihao-apps/spark-conf です。これを行わないと、システムはエラーを返します。

  1. 次のコマンドを実行して、connection.properties の構成を変更します。

    vim emr-serverless-spark-tool-0.11.3-SNAPSHOT/conf/connection.properties
  2. ファイルを次のように構成します。key=value 形式を使用してください。例:

    accessKeyId=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    accessKeySecret=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    regionId=cn-hangzhou
    endpoint=emr-serverless-spark.cn-hangzhou.aliyuncs.com
    workspaceId=w-xxxxxxxxxxxx
    重要

    この AccessKey に関連付けられた RAM ユーザーまたはロールには、RAM 権限付与が行われ、対応する Serverless Spark ワークスペースに追加されている必要があります。

    以下の表は、各パラメーターの説明です。

    パラメーター

    必須

    説明

    accessKeyId

    はい

    Spark ジョブの実行に使用する Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID および AccessKey Secret です。

    重要

    accessKeyId および accessKeySecret パラメーターを設定する際は、その AccessKey に関連付けられたユーザーが、ワークスペースにバインドされた OSS バケットに対して読み取りおよび書き込み権限を持っていることを確認してください。ワークスペースにバインドされた OSS バケットを表示するには、Spark ページに移動し、[操作] 列の [詳細] をクリックします。

    accessKeySecret

    はい

    regionId

    はい

    リージョン ID です。この例では中国 (杭州) リージョンを使用しています。

    endpoint

    はい

    EMR Serverless Spark のエンドポイントです。エンドポイントの詳細については、「サービスエンドポイント」をご参照ください。

    この例では、中国 (杭州) リージョンのパブリックエンドポイントを使用しています。パラメーター値は emr-serverless-spark.cn-hangzhou.aliyuncs.com です。

    説明

    ご利用の ECS インスタンスがパブリックネットワークにアクセスできない場合は、VPC エンドポイントを使用してください。

    workspaceId

    はい

    EMR Serverless Spark ワークスペースの ID です。

ステップ 3:Spark ジョブの送信

  1. 次のコマンドを実行して、EMR Serverless spark-submit ツールディレクトリに移動します。

    cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
  2. ジョブの種類に応じて送信方法を選択します。

    ジョブを送信する際は、JAR パッケージや Python スクリプトなどの依存ファイルリソースを指定する必要があります。これらのリソースは、シナリオや要件に応じて OSS またはローカルに保存できます。このトピックでは、OSS リソースを例として使用します。

    spark-submit の使用

    spark-submit は、Spark の汎用ジョブ送信ツールです。Java/Scala ジョブおよび PySpark ジョブの両方に使用できます。

    Java または Scala ジョブ

    この例では spark-examples_2.12-3.5.2.jar を使用します。spark-examples_2.12-3.5.2.jar をクリックしてテスト用 JAR パッケージをダウンロードし、OSS にアップロードしてください。この JAR パッケージは、円周率 (π) の値を計算する組み込みの Spark サンプルです。

    説明

    esr-4.x エンジンバージョンでは spark-examples_2.12-3.5.2.jar を使用する必要があります。esr-5.x エンジンバージョンを使用する場合は、このトピックでの検証用に spark-examples_2.13-4.0.1.jar をダウンロードしてください。

    ./bin/spark-submit  --name SparkPi \
    --queue dev_queue  \
    --num-executors 5 \
    --driver-memory 1g \
    --executor-cores 2 \
    --executor-memory 2g \
    --class org.apache.spark.examples.SparkPi \
     oss://<yourBucket>/path/to/spark-examples_2.12-3.5.2.jar \
    10000

    PySpark ジョブ

    この例では DataFrame.py および employee.csv を使用します。DataFrame.py および employee.csv をクリックしてテストファイルをダウンロードし、OSS にアップロードしてください。

    説明
    • DataFrame.py ファイルには、Apache Spark フレームワークを使用して OSS 内のデータを処理するコードが含まれています。

    • employee.csv ファイルには、従業員名、部署、給与などのデータリストが含まれています。

    ./bin/spark-submit --name PySpark \
    --queue dev_queue  \
    --num-executors 5 \
    --driver-memory 1g \
    --executor-cores 2 \
    --executor-memory 2g \
    --conf spark.tags.key=value \
    oss://<yourBucket>/path/to/DataFrame.py \
    oss://<yourBucket>/path/to/employee.csv

    パラメーターの説明は次のとおりです。

    • サポートされるオープンソースパラメーター

      パラメーター名

      説明

      --name

      SparkPi

      Spark ジョブのアプリケーション名を識別用に指定します。

      --class

      org.apache.spark.examples.SparkPi

      Java または Scala プログラムのエントリクラス名を指定します。Python プログラムではこのパラメーターを使用しないでください。

      --num-executors

      5

      Spark ジョブのエグゼキュータ数です。

      --driver-cores

      1

      Spark ドライバーに割り当てる CPU コア数です。

      --driver-memory

      1g

      Spark ドライバーに割り当てるメモリ量です。

      --executor-cores

      2

      各エグゼキュータに割り当てる CPU コア数です。

      --executor-memory

      2g

      各エグゼキュータに割り当てるメモリ量です。

      --files

      oss://<yourBucket>/file1,oss://<yourBucket>/file2

      Spark ジョブが参照するリソースファイルです。OSS リソースまたはローカルファイルを指定できます。複数のファイルを指定する場合は、カンマ (,) で区切ります。

      --py-files

      oss://<yourBucket>/file1.py,oss://<yourBucket>/file2.py

      Spark ジョブが参照する Python スクリプトです。OSS リソースまたはローカルファイルを指定できます。複数のファイルを指定する場合は、カンマ (,) で区切ります。このパラメーターは PySpark ジョブにのみ適用されます。

      --jars

      oss://<yourBucket>/file1.jar,oss://<yourBucket>/file2.jar

      Spark ジョブが参照する JAR パッケージです。OSS リソースまたはローカルファイルを指定できます。複数のファイルを指定する場合は、カンマ (,) で区切ります。

      --archives

      oss://<yourBucket>/archive.tar.gz#env,oss://<yourBucket>/archive2.zip

      Spark ジョブが参照するアーカイブパッケージです。OSS リソースまたはローカルファイルを指定できます。複数のファイルを指定する場合は、カンマ (,) で区切ります。

      --queue

      root_queue

      Spark ジョブを実行するキューです。キュー名は、EMR Serverless Spark ワークスペースのキュー管理で設定されたものと一致している必要があります。

      --proxy-user

      test

      指定された値により、HADOOP_USER_NAME 環境変数が上書きされます。この動作はオープンソース版と一致します。

      --conf

      spark.tags.key=value

      Spark ジョブのカスタムパラメーターです。

      --status

      jr-8598aa9f459d****

      Spark ジョブのステータスを確認します。

      --kill

      jr-8598aa9f459d****

      Spark ジョブを停止します。

    • 拡張非オープンソースパラメーター

      パラメーター名

      説明

      --detach

      N/A

      ジョブを送信後、spark-submit はジョブのステータスを待機または確認せずにすぐに終了します。

      --detail

      jr-8598aa9f459d****

      Spark ジョブの詳細を表示します。

      --release-version

      esr-4.1.1 (Spark 3.5.2, Scala 2.12)

      Spark バージョンを指定します。コンソールに表示されるエンジンバージョンを使用してください。

      --enable-template

      N/A

      テンプレート機能を有効にします。ジョブはワークスペースのデフォルト構成テンプレートを使用します。

      構成管理構成テンプレート を作成した場合は、--confspark.emr.serverless.templateId パラメーターを設定してテンプレート ID を指定してください。ジョブは指定されたテンプレート ID を直接適用します。テンプレートの作成方法の詳細については、「構成管理」をご参照ください。

      • --enable-template のみを指定した場合、ジョブは自動的にワークスペースのデフォルト構成テンプレートを適用します。

      • --conf でのみテンプレート ID を指定した場合、ジョブは指定されたテンプレート ID を直接適用します。

      • --enable-template--conf の両方を指定した場合:--enable-template--conf spark.emr.serverless.templateId の両方を指定すると、--conf で指定されたテンプレート ID がデフォルトテンプレートを上書きします。

      • いずれのパラメーターも指定しなかった場合:--enable-template--conf spark.emr.serverless.templateId も指定しない場合、ジョブはテンプレート構成を適用しません。

      --timeout

      60

      ジョブのタイムアウト期間(秒単位)です。

      --workspace-id

      w-4b4d7925a797****

      ジョブレベルでワークスペース ID を指定します。これにより、connection.properties ファイル内の workspaceId パラメーターがオーバーライドされます。

    • サポートされないオープンソースパラメーター

      • --deploy-mode

      • --master

      • --repositories

      • --keytab

      • --principal

      • --total-executor-cores

      • --driver-library-path

      • --driver-class-path

      • --supervise

      • --verbose

    spark-sql の使用

    spark-sql は、SQL クエリまたはスクリプトを実行するために特別に設計されたツールです。SQL 文を直接実行するシナリオに適しています。

    • 例 1:SQL 文を直接実行

      spark-sql -e "SHOW TABLES"

      このコマンドは、現在のデータベース内のすべてのテーブルを一覧表示します。

    • 例 2:SQL スクリプトファイルを実行

      spark-sql -f oss://<yourBucketname>/path/to/your/example.sql

      この例では example.sql を使用します。example.sql をクリックしてテストファイルをダウンロードし、OSS にアップロードしてください。

      example.sql ファイルの内容例

      CREATE TABLE IF NOT EXISTS employees (
          id INT,
          name STRING,
          age INT,
          department STRING
      );
      
      INSERT INTO employees VALUES
      (1, 'Alice', 30, 'Engineering'),
      (2, 'Bob', 25, 'Marketing'),
      (3, 'Charlie', 35, 'Sales');
      
      SELECT * FROM employees;
      

    以下の表は、各パラメーターの説明です。

    パラメーター名

    説明

    -e "<sql>"

    -e "SELECT * FROM table"

    コマンドラインで SQL 文をインライン実行します。

    -f <path>

    -f oss://path/script.sql

    指定されたパスの SQL スクリプトファイルを実行します。

ステップ 4:Spark ジョブの照会

CLI の使用

Spark ジョブのステータスの照会

cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
./bin/spark-submit --status <jr-8598aa9f459d****>

Spark ジョブの詳細の照会

cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
./bin/spark-submit --detail <jr-8598aa9f459d****>

UI 方式

  1. [EMR Serverless Spark] ページで、左側のナビゲーションウィンドウから [ジョブ履歴] をクリックします。

  2. [ジョブ履歴] ページで、[開発ジョブ] タブをクリックして、送信されたジョブを表示します。

    image

(オプション)ステップ 5:Spark ジョブの停止

cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
./bin/spark-submit --kill <jr-8598aa9f459d****>
説明

実行中 (Running) 状態のジョブのみ停止できます。

よくある質問

spark-submit ツールを使用してバッチジョブを送信する際に、ネットワーク接続をどのように指定すればよいですか?

  1. まずネットワーク接続を準備してください。詳細については、「ネットワーク接続の追加」をご参照ください。

  2. spark-submit コマンドで --conf を使用してネットワーク接続を指定します。

    --conf spark.emr.serverless.network.service.name=<networkname>

    <networkname> は、実際の接続名に置き換えてください。