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

AnalyticDB:Spark-Submit コマンドラインツールを使用した Spark アプリケーションの開発

最終更新日:Mar 29, 2026

AnalyticDB for MySQL の spark-submit コマンドラインツールを使用すると、クライアントから Spark JAR アプリケーションを送信および管理できます。本トピックでは、このツールのインストール、構成設定、Spark JAR アプリケーションの送信、および実行中のジョブの管理方法について説明します。

制限事項

  • spark-submit ツールは Spark JAR アプリケーションのみをサポートしており、Spark SQL アプリケーションは送信できません。

  • 送信操作は冪等でないため、失敗時にコマンドが自動的に再試行されません。ネットワークタイムアウトにより一見失敗したように見えるコマンドでも、実際にはすでに成功している可能性があります。送信が成功したかどうかを確認するには、--list オプションを使用するか、AnalyticDB for MySQL コンソールで確認してください。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • AnalyticDB for MySQL Data Lakehouse Edition クラスター

  • ジョブ リソースグループ。詳細については、「リソースグループの作成と管理」をご参照ください。

  • クラスターと同じリージョンにある Object Storage Service (OSS) バケット

  • クライアントマシンに Java 開発キット(JDK)1.8 以降がインストール済みであること

spark-submit のインストール

  1. インストールパッケージをダウンロードします。

    wget https://dla003.oss-cn-hangzhou.aliyuncs.com/adb-spark-toolkit-submit-0.0.1.tar.gz
  2. パッケージを解凍します。

    tar zxvf adb-spark-toolkit-submit-0.0.1.tar.gz

spark-submit の構成設定

パッケージを解凍した後、adb-spark-toolkit-submit/conf/spark-defaults.conf を開きます。spark-submit スクリプトはこのファイルを自動的に読み込み、設定内容はすべての Spark アプリケーションに適用されます。

vim adb-spark-toolkit-submit/conf/spark-defaults.conf

以下の表に、構成パラメーターを示します。

パラメーター必須説明
keyIdはいAnalyticDB for MySQL へのアクセス権限を持つ Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの AccessKey ID。詳細については、「アカウントと権限」をご参照ください。
secretIdはいAlibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。詳細については、「アカウントと権限」をご参照ください。
regionIdはいAnalyticDB for MySQL クラスターのリージョン ID。
clusterIdはいAnalyticDB for MySQL クラスターの ID。
rgNameはいSpark アプリケーションの実行に使用するジョブリソースグループの名前。
ossKeyIdいいえOSS へのアクセスに使用する AccessKey ID。オンプレミスに保存されている JAR ファイルを OSS にアップロードする場合に必要です。RAM ユーザーには AliyunOSSFullAccess 権限が必要です。
ossSecretIdいいえOSS へのアクセスに使用する AccessKey Secret。ossKeyId と共に指定する必要があります。
ossUploadPathいいえオンプレミスの JAR ファイルをアップロードする OSS パス。ossKeyId と共に指定する必要があります。
confいいえkey:value 形式の追加 Spark 構成パラメーター。複数のパラメーターを指定する場合はカンマで区切ります。利用可能なパラメーターの一覧については、「Spark アプリケーションの構成パラメーター」をご参照ください。

互換性

オープンソースの Spark-Submit との互換性を維持するため、AnalyticDB for MySQL Spark Conf に以下のパラメーターを設定することもできます:keyIdsecretIdregionIdclusterIdrgNameossKeyId、および ossUploadPath。これらのパラメーターはオープンソースの Spark 構成には含まれません。Conf 形式でこれらのパラメーターを構成する場合は、以下のコードに示す名前を使用する必要があります。

--conf spark.adb.access.key.id=<value>    
--conf spark.adb.access.secret.id=<value>
--conf spark.adb.regionId=<value>
--conf spark.adb.clusterId=<value>
--conf spark.adb.rgName=<value>
--conf spark.adb.oss.akId=<value>
--conf spark.adb.oss.akSec=<value>
--conf spark.adb.oss.endpoint=<value>
--conf spark.adb.oss.uploadPath=<value>

Spark アプリケーションの送信

  1. Spark アプリケーションの JAR ファイルを OSS にアップロードします。詳細については、「シンプルアップロード」をご参照ください。

  2. spark-submit ディレクトリに移動します。

    cd adb-spark-toolkit-submit
  3. Spark アプリケーションを送信します。プレースホルダーの値を、ご利用の実際の OSS パスおよびリソース名に置き換えてください。

    ./bin/spark-submit \
      --class com.aliyun.spark.oss.SparkReadOss \
      --verbose \
      --name Job1 \
      --jars oss://<bucket-name>/jars/test.jar,oss://<bucket-name>/jars/search.jar \
      --conf spark.driver.resourceSpec=medium \
      --conf spark.executor.instances=1 \
      --conf spark.executor.resourceSpec=medium \
      oss://<bucket-name>/jars/test1.jar args0 args1

    プレースホルダーを以下のように置き換えます。

    プレースホルダー説明
    <bucket-name>JAR ファイルを格納する OSS バケットの名前
    args0 args1JAR ファイルの引数(スペース区切り)

アプリケーションを送信した後、以下のいずれかのリターンコードが返されます。

リターンコード意味
0アプリケーションが正常に実行された
255アプリケーションの実行に失敗した
143アプリケーションが終了された

上記コマンドで使用される spark-submit パラメーターについて、以下の表に説明を示します。

パラメーター説明
--classJava または Scala アプリケーションのメインクラス。Python アプリケーションの場合は不要です。
--verbose送信中に生成されたログを出力します。
--nameSpark アプリケーションの名前。
--jarsアプリケーションが依存する追加の JAR ファイルの、絶対 OSS パス(カンマ区切り)。オンプレミスのパスを指定した場合、ツールはそのファイルを ossUploadPath で構成された OSS パスにアップロードします。オンプレミスの JAR ファイルをアップロード中は、システムが MD5 チェックサムでファイルを検証します。同名かつ同一 MD5 値のファイルが既に OSS に存在する場合、アップロードはキャンセルされます。OSS 上で JAR ファイルを手動で更新した場合は、対応する MD5 チェックサムファイルを削除して、更新後のファイルがアップロードされるようにしてください。RAM ユーザーには AliyunOSSFullAccess 権限が必要です。
--confSpark 構成パラメーター。複数のパラメーターを指定する場合は、個別のフラグとして指定します:--conf key1=value1 --conf key2=value2。AnalyticDB for MySQL 固有のパラメーターについては、「オープンソースの spark-submit との違い」をご参照ください。
メインファイルのパスメイン JAR ファイル(Java/Scala の場合)またはエントリポイントスクリプト(Python の場合)の絶対 OSS パス。すべてのメインファイルは OSS 上に格納する必要があります。
argsJAR ファイルの引数(スペース区切り)。

Spark アプリケーションの管理

アプリケーションを送信した後は、以下の典型的なワークフローに従って操作を行います。

  1. --list を実行し、アプリケーション ID を取得します。

  2. アプリケーション ID を用いて --status--get-log、または --detail を実行し、進行状況をモニターします。

  3. 必要に応じて --kill を実行し、アプリケーションを停止します。

アプリケーションの一覧表示

ここで返されたアプリケーション ID を、他のすべての管理コマンドで使用します。

./bin/spark-submit --list \
  --clusterId <cluster-ID> \
  --rgName <resource-group-name> \
  --pagenumber 1 \
  --pagesize 3

<cluster-ID> をご利用の AnalyticDB for MySQL クラスターの ID に、<resource-group-name> をジョブリソースグループの名前に置き換えてください。

アプリケーションのステータス確認

./bin/spark-submit --status <application-ID>

送信詳細および Spark UI URL の表示

./bin/spark-submit --detail <application-ID>

出力には、当該アプリケーションの Spark UI の URL が記載された Spark WEB UI フィールドが含まれます。

アプリケーションログの表示

./bin/spark-submit --get-log <application-ID>

アプリケーションの終了

./bin/spark-submit --kill <application-ID>

オープンソースの spark-submit との違い

AnalyticDB for MySQL の spark-submit 固有のパラメーター

以下のパラメーターは、AnalyticDB for MySQL の spark-submit ツールでのみ利用可能です。

パラメーターデフォルト説明
--api-retry-times3失敗したコマンドの最大リトライ回数。送信コマンドはリトライされません — 詳細については、「制限事項」をご参照ください。
--time-out-seconds10失敗したコマンドを再試行するまでのタイムアウト期間(秒単位)。
--enable-inner-endpoint仮想プライベートクラウド(VPC)内での内部ネットワークアクセスを有効化します。Elastic Compute Service(ECS)インスタンスからアプリケーションを送信する場合に使用します。
--list送信済みアプリケーションの一覧を表示します。--pagenumber および --pagesize と併用して、結果をページ分割できます。
--pagenumber1一覧表示結果のページ番号。
--pagesize101 ページあたりに表示するアプリケーション数。
--kill指定されたアプリケーションを終了します。
--get-log指定されたアプリケーションのログを取得します。
--status指定されたアプリケーションのステータスを表示します。

AnalyticDB for MySQL の spark-submit でサポートされないパラメーター

一部のオープンソースの spark-submit パラメーターはサポートされていません。完全なリストについては、「Spark アプリケーションの構成パラメーター」トピックをご参照ください。