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

AnalyticDB:Spark アプリケーションの設定パラメーター

最終更新日:Jul 16, 2026

AnalyticDB for MySQL の Spark 設定パラメーターは、 Apache Spark のものと類似しています。このトピックでは、 AnalyticDB for MySQL の設定パラメーターのうち、 Apache Spark と異なるものについて説明します。

使用上の注意

Spark アプリケーションの設定パラメーターは、Spark アプリケーションの動作とパフォーマンスを設定、調整するために使用します。これらのパラメーターの形式は、使用する Spark 開発ツールによって異なります。

開発ツール

設定パラメーターの形式

設定例

SQL エディター

set キー=値;

set spark.sql.hive.metastore.version=adb;

Spark Jar エディター

"キー": "値"

"spark.sql.hive.metastore.version":"adb"

ノートブックエディター

"キー": "値"

"spark.sql.hive.metastore.version":"adb"

spark-submit コマンドラインインターフェイス

キー=値

spark.sql.hive.metastore.version=adb

ドライバーとエグゼキューターのリソース指定

パラメーター

必須

デフォルト値

説明

Apache Spark の対応パラメーター

spark.adb.acuPerApp

いいえ

なし

単一の Spark ジョブで使用される ACU の数です。有効な値の範囲は [2, ジョブリソースグループの最大コンピューティングリソース] です。

このパラメーターを設定すると、システムは Spark ドライバーの仕様、Spark エグゼキューターの仕様、Spark エグゼキューターノードの数を自動的に計算し、設定します。

spark.adb.acuPerApp の設定戦略 (クリックして表示)

  • spark.adb.acuPerApp と他のすべてのリソースパラメーター (spark.driver.resourceSpec、spark.executor.resourceSpec、spark.executor.instances を含む) の両方を設定した場合、spark.adb.acuPerApp は無効になり、他のリソースパラメーターの値は変更されません。

  • spark.adb.acuPerApp のみを設定した場合、spark.adb.acuPerApp は有効になり、他のすべてのリソースパラメーターは spark.adb.acuPerApp に基づいて自動的に計算・設定されます。

  • 他の設定の組み合わせでは、spark.adb.acuPerApp は有効です。システムは明示的に設定されていないリソースパラメーター (spark.driver.resourceSpec、spark.executor.resourceSpec、spark.executor.instances) をこのパラメーターに基づいて自動的に計算します。明示的に設定されたパラメーターの値は変更されません。

N/A

spark.driver.resourceSpec

はい

medium

Spark ドライバーのリソース仕様です。タイプごとに仕様が異なります。詳細については、本トピックの表「Spark リソース仕様」にある「タイプ」列をご参照ください。

重要

Spark アプリケーションをサブミットする場合、Apache Spark パラメーターを使用して、本トピックの表「Spark リソース仕様」に記載のコア数とメモリの値に基づいてパラメーターを設定できます。

例:CONF spark.driver.resourceSpec = c.small;。この例では、Spark ドライバーは 1 コアと 2 GB のメモリを使用します。

spark.driver.cores および spark.driver.memory

spark.executor.resourceSpec

はい

medium

各 Spark エグゼキューターのリソース仕様です。タイプごとに仕様が異なります。詳細については、本トピックの表「Spark リソース仕様」にある「タイプ」列をご参照ください。

重要

Spark アプリケーションをサブミットする場合、Apache Spark パラメーターを使用して、本トピックの表「Spark リソース仕様」に記載のコア数とメモリの値に基づいてパラメーターを設定できます。

例:CONF spark.executor.resourceSpec = c.small;。この例では、各 Spark エグゼキューターは 1 コアと 2 GB のメモリを使用します。

spark.executor.cores および spark.executor.memory

spark.executor.instances

いいえ

ジョブリソースグループの最大コンピューティングリソース / 5

起動する Spark エグゼキューターの数です。

spark.executor.instances

spark.adb.driverDiskSize

いいえ

なし

大容量のディスクストレージ要件を満たすために、Spark ドライバーにマウントする追加ディスクストレージのサイズです。デフォルトでは、追加のディスクストレージは /user_data_dir ディレクトリにマウントされます。

単位:GiB。有効な値の範囲は (0, 100] です。例:spark.adb.driverDiskSize=50Gi。この例では、Spark ドライバーにマウントされる追加のディスクストレージは 50 GiB になります。

N/A

spark.adb.executorDiskSize

いいえ

なし

シャッフル操作の要件を満たすために、Spark エグゼキューターにマウントする追加ディスクストレージのサイズです。デフォルトでは、追加のディスクストレージは /shuffle_volume ディレクトリにマウントされます。

単位:GiB。有効な値の範囲は (0, 100] です。例:spark.adb.executorDiskSize=50Gi。この例では、Spark エグゼキューターにマウントされる追加のディスクストレージは 50 GiB になります。

N/A

Spark リソース仕様

重要

予約済みリソースまたはエラスティックリソースを使用して Spark ジョブを実行できます。ジョブリソースグループのオンデマンドエラスティックリソースを使用して Spark ジョブを実行する場合、システムは、Spark リソース仕様と CPU 対メモリ比に基づき、次の式を用いて使用 AnalyticDB コンピューティングユニット (ACU) 数を計算します:

  • CPU 対メモリ比が 1:2 の場合:使用 ACU 数 = CPU コア数 × 0.8

  • CPU 対メモリ比が 1:4 の場合:使用 ACU 数 = CPU コア数 × 1

  • CPU 対メモリ比が 1:8 の場合:使用 ACU 数 = CPU コア数 × 1.5

オンデマンドエラスティックリソースの価格については、「Data Lakehouse Edition の価格設定」をご参照ください。

表 1. Spark リソース仕様

タイプ

仕様

使用 ACU

CPU コア数

メモリ (GB)

ディスクストレージ1 (GB)

c.small

1

2

20

0.8

small

1

4

20

1

m.small

1

8

20

1.5

c.medium

2

4

20

1.6

medium

2

8

20

2

m.medium

2

16

20

3

c.large

4

8

20

3.2

large

4

16

20

4

m.large

4

32

20

6

c.xlarge

8

16

20

6.4

xlarge

8

32

20

8

m.xlarge

8

64

20

12

c.2xlarge

16

32

20

12.8

2xlarge

16

64

20

16

m.2xlarge

16

128

20

24

m.4xlarge

32

256

20

48

m.8xlarge

64

512

20

96

説明

1 ディスクストレージ:システムがディスクストレージの約 1% を占有するため、実際に利用可能なディスクストレージは 20 GB 未満となる場合があります。

Spark ジョブに 32 個のエグゼキューターを割り当て、各エグゼキューターの仕様をmedium (2 コア、8 GB)、ドライバーの仕様をsmall (1 コア、4 GB) とします。この場合、ジョブ全体で合計 65 ACU のコンピューティングリソースが割り当てられます。

{
   "spark.driver.resourceSpec":"small",
   "spark.executor.resourceSpec":"medium",
   "spark.executor.instances":"32",
   "spark.adb.executorDiskSize":"100Gi"
}

Spark ジョブの優先度の指定

パラメーター

必須

デフォルト値

説明

spark.adb.priority

いいえ

NORMAL

Spark ジョブの優先度。送信されたすべての Spark ジョブを実行するリソースが不足している場合、キュー内ではより優先度の高いジョブが先に実行されます。有効な値:

  • HIGH :高優先度。

  • NORMAL :通常優先度。

  • LOW :低優先度。

  • LOWEST :最低優先度。

重要

ストリーミング Spark ジョブ (長時間実行のストリーミングジョブ) には、このパラメーターを HIGH に設定することを推奨します。

メタデータへのアクセス

パラメーター

必須

デフォルト値

説明

spark.sql.catalogImplementation

任意

  • Spark SQL ジョブ:hive

  • Spark SQL 以外のジョブ:in-memory

アクセスするメタデータのタイプです。有効な値:

  • hive:Hive 互換メタストアのメタデータ

  • in-memory:一時ディレクトリのメタデータ

spark.sql.hive.metastore.version

任意

  • Spark SQL ジョブ:adb

  • Spark SQL 以外のジョブ:<hive_version>

メタストアサービスのバージョンです。有効な値:

  • adbAnalyticDB for MySQL のメタデータに接続します。

  • <hive_version>:Hive メタストアのバージョン

説明
  • Apache Spark でサポートされている Hive のバージョンについては、「Spark 設定」をご参照ください。

  • セルフマネージド Hive メタストアにアクセスするには、デフォルトの設定を標準の Apache Spark 設定に置き換えることができます。詳細については、「Spark 設定」をご参照ください。

  • AnalyticDB for MySQL のメタデータにアクセスするには、次の設定を構成します:

    spark.sql.hive.metastore.version=adb;
  • Hive メタストアのメタデータにアクセスするには、次の設定を構成します:

    spark.sql.catalogImplementation=hive;
    spark.sql.hive.metastore.version=2.1.3;
  • 一時ディレクトリのメタデータにアクセスするには、次の設定を構成します:

    spark.sql.catalogImplementation=in-memory;

Spark UI の設定

パラメーター

必須

デフォルト値

説明

spark.app.log.rootPath

いいえ

oss://<aliyun-oa-adb-spark-Alibaba Cloud account ID-oss-Zone ID>/<Cluster ID>/<Spark application ID>

AnalyticDB for MySQL の Spark ジョブログと、Linux オペレーティングシステムの出力データが格納されるディレクトリです。

デフォルトでは、「Spark application ID」という名前のフォルダーに次の内容が含まれます。

  • Spark UI のレンダリングに使用される Spark イベントログを格納する Spark application ID-000X という名前のファイル。

  • driver および数字という名前の、対応するノードのログを格納するフォルダー。

  • Linux オペレーティングシステムの出力データを格納する、stdout および stderr という名前のフォルダー。

spark.adb.event.logUploadDuration

いいえ

false

イベントログのアップロード時間を記録するかどうかを指定します。

spark.adb.buffer.maxNumEvents

いいえ

1000

ドライバーがキャッシュするイベントの最大数です。

spark.adb.payload.maxNumEvents

いいえ

10000

一度に Object Storage Service (OSS) にアップロードできるイベントの最大数です。

spark.adb.event.pollingIntervalSecs

いいえ

0.5

OSS へのイベントアップロード間隔です。単位は秒です。たとえば、値が 0.5 の場合、0.5 秒ごとにイベントがアップロードされることを示します。

spark.adb.event.maxPollingIntervalSecs

いいえ

60

OSS へのイベントのアップロードが失敗した場合の最大再試行間隔。 単位: 秒。 アップロードが失敗してから再試行するまでの間隔は、spark.adb.event.pollingIntervalSecs から spark.adb.event.maxPollingIntervalSecs の値の範囲内である必要があります。

spark.adb.event.maxWaitOnEndSecs

いいえ

10

OSS へのイベントアップロードの最大待機時間です。単位は秒です。最大待機時間は、アップロードの開始から完了までの間隔です。最大待機時間内にアップロードが完了しない場合、アップロードは再試行されます。

spark.adb.event.waitForPendingPayloadsSleepIntervalSecs

いいえ

1

アップロードが spark.adb.event.maxWaitOnEndSecs の値で指定された時間内に完了しなかった場合に、再試行するまでの待機時間。単位: 秒。

spark.adb.eventLog.rolling.maxFileSize

いいえ

209715200

OSS 内のイベントログの最大ファイルサイズです。単位はバイトです。イベントログは、Eventlog.0 や Eventlog.1 などの複数のファイルの形式で OSS に保存されます。ファイルサイズを指定できます。

RAM ユーザーへの権限付与

パラメーター

必須

デフォルト値

説明

spark.adb.roleArn

いいえ

なし

Spark アプリケーションを送信する権限を RAM ユーザーに付与するために、RAM コンソールで RAM ユーザーにアタッチする Resource Access Management (RAM) ロールの Alibaba Cloud リソース名 (ARN) です。 詳細については、「RAM ロールの概要」をご参照ください。 RAM ユーザーとして Spark アプリケーションを送信する場合、このパラメーターを指定する必要があります。 Alibaba Cloud アカウントで Spark アプリケーションを送信する場合、このパラメーターを指定する必要はありません。

説明

RAM コンソールで RAM ユーザーに権限を付与した場合、このパラメーターを指定する必要はありません。詳細については、「アカウントの権限付与」をご参照ください。

組み込みデータソースコネクタの有効化

パラメーター

必須

デフォルト値

説明

spark.adb.connectors

いいえ

なし

有効化する AnalyticDB for MySQL Spark の組み込みコネクタの名前。複数の名前はカンマ (,) で区切ります。有効な値:oss, hudi, delta, adb, odps, external_hive, jindo, default。

spark.hadoop.io.compression.codec.snappy.native

いいえ

false

Snappy ファイルが標準の Snappy フォーマットであるかどうかを指定します。デフォルトでは、Hadoop は Hadoop で編集された Snappy ファイルを認識します。このパラメーターを true に設定すると、標準の Snappy ライブラリを使用して展開します。このパラメーターを false に設定すると、Hadoop のデフォルトの Snappy ライブラリを使用して展開します。

VPC アクセスとデータソースアクセスの有効化

パラメーター

必須

デフォルト値

説明

spark.adb.eni.enabled

いいえ

false

Elastic Network Interface (ENI) を有効にするかどうかを指定します。

外部テーブルを使用して他の外部データソースにアクセスする場合は、ENI を有効にする必要があります。 有効な値:

  • true:有効化

  • false:無効化

spark.adb.eni.vswitchId

いいえ

N/A

ENI に関連付けられている vSwitch の ID。

AnalyticDB for MySQL から Virtual Private Cloud (VPC) 内の Elastic Compute Service (ECS) インスタンスに接続する場合、VPC の vSwitch ID を指定する必要があります。

説明

VPC アクセスを有効にする場合は、spark.adb.eni.enabled パラメーターを true に設定する必要があります。

spark.adb.eni.securityGroupId

いいえ

N/A

ENI に関連付けられているセキュリティグループの ID。

AnalyticDB for MySQL から VPC 経由で ECS インスタンスに接続する場合、セキュリティグループ ID を指定する必要があります。

説明

VPC アクセスを有効にする場合は、spark.adb.eni.enabled パラメーターを true に設定する必要があります。

spark.adb.eni.extraHosts

いいえ

N/A

IP アドレスとホスト名のマッピング。 このパラメーターを使用すると、Spark はデータソースのホスト名を解決できます。 セルフマネージド Hive データソースにアクセスする場合は、このパラメーターを指定する必要があります。

説明
  • IP アドレスとホスト名はスペースで区切ります。 複数の IP アドレスとホスト名のグループはコンマ (,) で区切ります。 例: ip0 master0,ip1 master1

  • データソースアクセスを有効にする場合は、spark.adb.eni.enabled パラメーターを true に設定する必要があります。

spark.adb.eni.adbHostAlias.enabled

いいえ

false

AnalyticDB for MySQL が必要とするドメイン名解決情報を、ドメイン名と IP アドレスのマッピングテーブルに自動的に書き込むかどうかを指定します。 有効な値:

  • true:有効化。

  • false:無効化。

ENI を使用して EMR Hive からデータを読み取るか、EMR Hive にデータを書き込む場合は、このパラメーターを true に設定する必要があります。

アプリケーションのリトライ設定

パラメーター

必須

デフォルト値

説明

spark.adb.maxAttempts

いいえ

1

アプリケーション実行の最大試行回数です。デフォルト値の 1 は、リトライが許可されないことを意味します。

Spark アプリケーションでこのパラメーターを 3 に設定すると、システムはスライディングウィンドウ内で最大 3 回までアプリケーションの実行を試みます。

spark.adb.attemptFailuresValidityInterval

いいえ

Integer.MAX

アプリケーションの再実行を試みるスライディングウィンドウの期間です。単位は秒です。

たとえば、Spark アプリケーションでこのパラメーターを 6000 に設定した場合、実行が失敗した後、システムは直近 6,000 秒間の試行回数をカウントします。試行回数が maxAttempts パラメーターの値より少ない場合、システムはアプリケーションの実行をリトライします。

スケジューリングタイムアウト時のジョブ自動終了 (スケジューリングウォッチドッグ)

基盤リソースの不足 (ECI インベントリの枯渇、リソースクォータの超過、満たすことができないノードアフィニティなど) により、ジョブのエグゼキューター Pod が長期間 Pending 状態のままである場合、ジョブは待機し続け、ドライバーリソースを浪費し、後続のスケジューリングをブロックします。この機能を有効にすると、スケジュール不可なエグゼキューターの比率と待機時間の両方が指定されたしきい値に達した場合、システムは自動的にジョブを失敗としてマークし、リソースを解放してフェイルファスト動作を実現します。

シナリオ

この機能は、共有クラスターで多数の Spark ジョブを実行し、リソースが不足している場合にジョブを無期限に待機させるのではなく、迅速に失敗させたいシナリオに適しています。典型的なシナリオには次のものが含まれます。

  • ECI リソースの不足:Elastic Container Instance (ECI) を使用してエグゼキューターを実行する場合、基盤インスタンスタイプのインベントリが不足すると、Pod が長時間 Pending 状態のままになります。

  • リソースクォータの超過:ネームスペースまたはリソースグループの CPU またはメモリクォータが枯渇し、新しいエグゼキューターをスケジュールできません。

  • バッチジョブの高速リトライ:リソースが利用できない場合にジョブを迅速に失敗させ、上位層のスケジューリングシステム (Airflow など) にリトライ戦略の決定を委ねたい場合。

設定方法

Spark ジョブをサブミットする際に、次のパラメーターを設定してウォッチドッグを有効にし、動作を調整します。

パラメーター

必須

デフォルト値

説明

spark.adb.terminateOnPending.enabled

機能を有効にする場合は必須

false

この機能を有効にするかどうかを指定します。有効な値:

  • true:機能を有効にします。

  • false (デフォルト):機能を無効にします。

この機能はデフォルトで無効になっています。このパラメーターを true に設定した場合にのみ、この機能と他のパラメーターが有効になります。

spark.adb.terminateOnPending.timeoutSec

いいえ

610

エグゼキューター Pod が Pending 状態のままである許容時間。単位:秒。タイマーは、エグゼキューター Pod が最初にスケジュール不可と検出された時点から開始されます。待機時間がこの値を超え、spark.adb.terminateOnPending.executorRatio の条件も満たされた場合、ジョブは終了されます。

推奨値:610 ~ 900。

spark.adb.terminateOnPending.executorRatio

いいえ

0.5

終了をトリガーするスケジュール不可なエグゼキューターの比率のしきい値。有効範囲:(0, 1.0]。比率は、スケジュール不可なエグゼキューターの数を予想される総エグゼキューター数で割った値として計算されます。比率がこの値に達し、Pending 時間が spark.adb.terminateOnPending.timeoutSec を超えた場合、ジョブは終了されます。

値が小さいほどトリガーされやすくなり、値が大きいほどトリガーされにくくなります。

  • 0.3:エグゼキューターの 30% がスケジュール不可の場合に終了をトリガーします。レイテンシに敏感なジョブに適しています。

  • 0.5 (デフォルト):エグゼキューターの半分がスケジュール不可の場合に終了をトリガーします。

  • 0.8 ~ 1.0:ほとんどまたはすべてのエグゼキューターがスケジュール不可の場合にのみ終了をトリガーします。リソースが動的に変動する環境に適しています。

予想される総エグゼキューター数は、次の優先順位に基づいて決定されます。

  1. spark.executor.instances (静的割り当て)。

  2. spark.dynamicAllocation.initialExecutors (動的割り当ての初期値)。

  3. spark.dynamicAllocation.maxExecutors (動的割り当ての最大値)。

  4. 上記のパラメーターがいずれも設定されていない場合、現在のスケジュール不可な Pod の数が使用されます。

重要

終了は、spark.adb.terminateOnPending.executorRatiospark.adb.terminateOnPending.timeoutSec の両方の条件が満たされた場合にのみトリガーされます。待機時間のみが超過して比率に達していない場合、または比率のみに達して待機時間が不足している場合、終了はトリガーされません。

設定例:ジョブのスケジューリングタイムアウト時のジョブ自動終了を有効にし、エグゼキューターの半分が 300 秒以上スケジュール不可のままである場合にジョブを終了します。

{
   "spark.adb.terminateOnPending.enabled":"true",
   "spark.adb.terminateOnPending.timeoutSec":"300",
   "spark.adb.terminateOnPending.executorRatio":"0.5"
}

終了後のジョブの動作

終了がトリガーされた後、ジョブは次のように動作します。

  • ジョブの状態: SparkApplication は、まず FailingState になり、次に FailedState に変わります。

  • エラーメッセージstatus.appState.errorMessage には、構造化された障害診断情報が含まれています。

  • ドライバー Pod:ドライバー Pod は削除され、リソースが解放されます。

次の例は、エラーメッセージを示しています。

[ResourceQuotaExceeded] executors unschedulable: 5/10 (50%) for 5m12s; threshold ratio≥50%, age≥5m0s
denom=10 (spec.executor.instances), distinct reasons=1, oldest pod=my-job-exec-3 (pending since 2026-06-01T10:16:34Z)
scheduler reason: Unschedulable
scheduler message: 0/1279 nodes are available: quota not enough, quotaName: amv-x

エラーメッセージの冒頭の角括弧内の内容は、システムによって自動的に分類された障害原因を示します。次の表は、各カテゴリの意味と推奨される対処法を説明しています。

障害カテゴリ

意味

推奨される対処法

ECIPendingTimeout

ECI Pod が最大 Pending 期間を超過しています。

ECI インスタンスタイプのインベントリを確認するか、別の ECI インスタンスタイプに切り替えます。

ResourceQuotaExceeded

リソースクォータが不足しています。

管理者に連絡してクォータを増やすか、ジョブの同時実行数を減らします。

InsufficientClusterResources

クラスターの CPU またはメモリが不足しています。

リソースが解放されるのを待つか、クラスターをスケールアウトします。

説明

ウォッチドッグはジョブを失敗としてマークするだけです。その後ジョブがリトライされるかどうかは、ジョブの restartPolicy によって制御され、ジョブが通常失敗した場合の動作と一致します。アプリケーションのリトライの詳細については、このトピックの「アプリケーションのリトライを設定する」セクションをご参照ください。

Spark ジョブのランタイム環境指定

次の表に、仮想環境テクノロジーを使用して Python 環境をパッケージ化し、Spark ジョブをサブミットする際に必要な設定パラメーターを示します。

パラメーター

必須

デフォルト値

説明

spark.pyspark.python

いいえ

N/A

オンプレミスデバイス上の Python インタープリターのパス。

Spark バージョンの指定

パラメーター

必須

デフォルト値

説明

spark.adb.version

不要

3.2

Spark バージョン。有効値:

  • 2.4

  • 3.2

  • 3.3

  • 3.5

  • 4.0

高性能ベクトル化実行エンジン

パラメーター

必須

デフォルト値

説明

spark.adb.native.enabled

いいえ

false

ジョブの実行に高性能ベクトル化実行エンジンを有効にするかどうかを指定します。このエンジンは AnalyticDB for MySQL Spark に組み込まれており、オープンソース Spark と完全互換です。既存のコードを変更せずに有効にできます。

レイクストレージの高速化

パラメーター

必須

デフォルト値

説明

spark.adb.lakecache.enabled

No

false

LakeCache (レイクストレージの高速化) を有効にするかどうかを指定します。

AnalyticDB for MySQL でサポートされていない設定パラメーター

AnalyticDB for MySQL Spark は、Apache Spark の次の設定パラメーターをサポートしていません。これらのパラメーターは AnalyticDB for MySQL Spark では有効になりません。

無視されるオプション:
  --deploy-mode
  --master
  --packages, 代わりに '--jars' を使用してください
  --exclude-packages
  --proxy-user
  --repositories
  --keytab
  --principal
  --queue
  --total-executor-cores
  --driver-library-path
  --driver-class-path
  --supervise
  -S,--silent
  -i <filename>