全部產品
Search
文件中心

AnalyticDB:Spark應用配置參數說明

更新時間:Dec 18, 2025

AnalyticDB for MySQLSpark配置參數跟開源Spark中的配置參數基本一致。本文介紹AnalyticDB for MySQL與開源Spark用法不一致的配置參數。

使用說明

Spark應用配置參數用於配置和調整Spark應用程式的行為和效能。使用不同的Spark開發工具,應用配置參數的格式不同。

開發工具

配置參數格式

配置參數樣本

SQL開發編輯器

set key=value;

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

Spark Jar開發編輯器

"key": "value"

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

Notebook開發編輯器

"key": "value"

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

spark-submit命令列工具

key=value

spark.sql.hive.metastore.version=adb

指定Driver和Executor資源

參數名稱

是否必填

預設值

參數說明

對應開源Spark參數名稱

spark.adb.acuPerApp

單個Spark作業執行時所使用的ACU,取值範圍為[2,Job型資源群組計算最大資源]。

配置該參數後,系統會自動計算並配置Spark Driver規格、Spark Executor規格和Spark Executor節點個數。

點擊查看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),而已經明確配置的參數取值保持不變。

spark.driver.resourceSpec

medium

Spark Driver的資源規格。不同型號的取值對應不同的規格,詳情請參見Spark資源規格列表的型號列。

重要

提交Spark應用時,可使用開源Spark參數,且取值需為Spark資源規格列表中的核心數和記憶體。

例如CONF spark.driver.resourceSpec = c.small;,則Spark Driver的資源規格為1核2 GB。

spark.driver.coresspark.driver.memory

spark.executor.resourceSpec

medium

Spark Executor的資源規格。不同型號的取值對應不同的規格,詳情請參見Spark資源規格列表的型號列。

重要

提交Spark應用時,可使用開源Spark參數,且取值需為Spark資源規格列表中的核心數和記憶體。

例如CONF spark.executor.resourceSpec = c.small;,則Spark Executor的資源規格為1核2 GB。

spark.executor.coresspark.executor.memory

spark.executor.instances

Job型資源群組計算最大資源/5

啟動的Spark Executor節點個數。

spark.executor.instances

spark.adb.driverDiskSize

在Spark Driver節點中掛載的額外磁碟容量, 應用於業務上需要較大磁碟空間的情境。預設掛載目錄為/user_data_dir。

取值範圍為(0,100],單位為GiB,例如:spark.adb.driverDiskSize=50Gi,表示將Spark Driver節點中掛載的額外磁碟容量設定為50 GiB。

spark.adb.executorDiskSize

在Spark Executor節點中掛載的額外磁碟容量, 應用於Shuffle資料寫入。預設掛載目錄為/shuffle_volume。

取值範圍為(0,100],單位為GiB,例如:spark.adb.executorDiskSize=50Gi,表示將Spark Executor節點中掛載的額外磁碟容量設定為50 GiB。

Spark資源規格列表

重要

執行Spark作業時,既可以使用預留資源,也可以使用彈性資源。如果使用Job型資源群組的按需彈性資源執行Spark作業,會根據Spark資源規格以及資源規格的CPU記憶體比計算使用的ACU數量,具體計算方法如下。

  • CPU記憶體比為1:2,使用的ACU數量=Spark資源規格核心數*0.8。

  • CPU記憶體比為1:4,使用的ACU數量=Spark資源規格核心數*1。

  • CPU記憶體比為1:8,使用的ACU數量=Spark資源規格核心數*1.5。

按需彈性資源的計費價格,詳情請參見湖倉版產品定價

表 1. Spark資源規格列表

型號(Type)

規格

使用的ACU數量

CPU(Core)

記憶體(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個Executor,每個Executor的規格為 medium(即2核8 GB),每個Driver的規格為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作業排隊執行時,等待隊列中優先順序更高的Spark作業優先擷取運行資源,從而保障其能更早進入執行狀態。取值說明:

  • HIGH:高優先順序。

  • NORMAL:一般優先順序。

  • LOW:低優先順序。

  • LOWEST:最低優先順序。

重要

建議設定Streaming類(長期啟動並執行流作業)Spark作業的優先順序為HIGH。

串連中繼資料服務

參數名稱

是否必填

預設值

參數說明

spark.sql.catalogImplementation

  • Spark SQL類型作業的預設值為:hive

  • 非Spark SQL類型作業的預設值:in-memory

指定串連中繼資料服務的類型,支援如下配置:

  • hive:串連Spark內建的Hive MetaStore中的中繼資料資訊。

  • in-memory:串連臨時目錄中的中繼資料資訊。

spark.sql.hive.metastore.version

  • Spark SQL類型作業的預設值:adb

  • 非Spark SQL類型作業的預設值:<hive_version>

指定採用中繼資料服務版本,支援如下配置:

  • adb:串連AnalyticDB for MySQL中的中繼資料資訊。

  • <hive_version>:指定Hive MetaStore的版本。

說明

樣本

  • 串連AnalyticDB for MySQL中的中繼資料資訊,配置如下:

    spark.sql.hive.metastore.version=adb;
  • 串連Spark內建的Hive MetaStore中的中繼資料資訊,配置如下:

    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-阿里雲帳號ID-oss-可用性區域ID>/<叢集ID>/<Spark應用ID>

儲存AnalyticDB for MySQLSpark作業日誌及Linux作業系統輸出內容的路徑。

預設OSS路徑Spark應用ID的檔案夾下儲存的內容如下:

  • 名稱為Spark應用ID-000X的檔案儲存體用於Spark UI渲染的Spark Event日誌。

  • 名稱為driver和數位檔案夾儲存對應的節點日誌。

  • 名稱為stdoutstderr的檔案夾儲存Linux作業系統的輸出內容。

spark.adb.event.logUploadDuration

false

是否記錄EventLog上傳時消耗的時間。

spark.adb.buffer.maxNumEvents

1000

Driver內部緩衝Event的最大數量。

spark.adb.payload.maxNumEvents

10000

一次上傳的Event到OSS的最大數量。

spark.adb.event.pollingIntervalSecs

0.5

Event上傳到OSS時,兩次上傳之間的時間間隔,單位為秒。例如:設定為每隔0.5秒上傳一次。

spark.adb.event.maxPollingIntervalSecs

60

重新上傳Event到OSS需要等待的最大時間間隔。單位為秒。如果上傳失敗需要重新上傳,兩次上傳的時間間隔會大於spark.adb.event.pollingIntervalSecs,但時間間隔最大不會超過spark.adb.event.maxPollingIntervalSecs

spark.adb.event.maxWaitOnEndSecs

10

Event上傳到OSS的最大等待時間,單位為秒。最大等待時間為開始上傳到完成上傳的時間間隔。超過最大等待時間會重新上傳。

spark.adb.event.waitForPendingPayloadsSleepIntervalSecs

1

重新上傳Event完成的最大時間,單位為秒。在超過 spark.adb.event.maxWaitOnEndSecs的時間後未完成上傳,重新上傳需要等待的時間。

spark.adb.eventLog.rolling.maxFileSize

209715200

EventLog在OSS隱藏檔的切片大小,單位為 byte。EventLog在OSS上是多個檔案儲存體,例如 Eventlog.0、Eventlog.1,可控制Eventlog.0、Eventlog.1檔案的大小。

為RAM使用者授權

參數名稱

是否必填

預設值

參數說明

spark.adb.roleArn

RAM系統中授予提交Spark應用的RAM使用者的角色ARN,詳情請參見RAM角色概覽。RAM使用者提交應用時,需要填寫該參數,阿里雲帳號無需填寫該參數。

說明

如果已在控制台為RAM使用者進行了快速授權操作,則無需再通過配置參數為該RAM使用者授權。詳情請參見帳號授權

內建資料來源連接器

參數名稱

是否必填

預設值

參數說明

spark.adb.connectors

啟用AnalyticDB for MySQLSpark內建的連接器,連接器名稱以逗號分隔,目前可選的連接器有oss、hudi、delta、adb、odps、external_hive、jindo、default。

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

false

標識Snappy檔案是否為標準Snappy檔案。Hadoop預設識別的是Hadoop修改過的Snappy格式檔案。設定為true時將使用標準Snappy庫解壓,否則使用hadoop預設的Snappy庫解壓。

跨VPC訪問和串連資料來源

參數名稱

是否必填

預設值

參數說明

spark.adb.eni.enabled

false

是否開啟ENI訪問的開關。

如果是通過外表訪問其他外部資料源,則需要開啟ENI訪問開關。取值說明:

  • true:開啟

  • false:關閉

spark.adb.eni.vswitchId

彈性網卡的交換器ID。

如果是從ECS通過VPC網路連接AnalyticDB for MySQL,需要配置VPC網路的交換器ID。

說明

當配置了開啟VPC網路時,需要同時開啟ENI訪問,即配置spark.adb.eni.enabled為true。

spark.adb.eni.securityGroupId

彈性網卡的安全性群組ID。

如果是從ECS通過VPC網路連接AnalyticDB for MySQL,需配置安全性群組ID。

說明

當配置了開啟VPC網路時,需要同時開啟ENI訪問,即配置spark.adb.eni.enabled為true。

spark.adb.eni.extraHosts

需要額外傳入的IP和Host的映射關係,以便Spark能正確解析資料來源中的Host。如串連自建的Hive資料來源,則需要傳入此參數。

說明
  • IP和Host之間用空格分隔。多個IP和網域名稱用英文逗號(,)分隔,如ip0 master0,ip1 master1

  • 當配置了串連資料來源時,需要同時開啟ENI網路,即配置spark.adb.eni.enabled為true。

spark.adb.eni.adbHostAlias.enabled

false

是否開啟自動將AnalyticDB for MySQL服務所需要的網域名稱解析資訊寫入到網域名稱映射表中。取值說明:

  • true:開啟。

  • false:關閉。

在通過ENI串連EMR Hive讀寫資料時,需要開啟。

應用重試

參數名稱

是否必填

預設值

參數說明

spark.adb.maxAttempts

1

最大嘗試次數,預設值為1,代表不需要重試。

假設配置為3,則這個應用在一個滑動視窗期時間內最多嘗試3次。

spark.adb.attemptFailuresValidityInterval

Integer.MAX

重試計數的滑動視窗時間,單位:秒(s)。

假設配置為6000,那麼當一次重試失敗後,系統會計算過去6000s共進行了多少次重試,如果重試次數少於maxAttempts的配置值,則會繼續重試。

指定Spark作業的運行環境

使用Virtual Environments打包Python環境,提交Spark作業時需配置以下參數。

參數名稱

是否必填

預設值

參數說明

spark.pyspark.python

指定要使用的Python解譯器的本地路徑。

指定Spark版本

參數名稱

是否必填

預設值

參數說明

spark.adb.version

3.2

指定Spark的版本。取值:

  • 2.4

  • 3.2

  • 3.3

  • 3.5

  • 4.0

高效能向量化執行引擎

參數名稱

是否必填

預設值

參數說明

spark.adb.native.enabled

false

是否開啟高效能向量化執行引擎執行作業,AnalyticDB Spark內建高效能向量化執行引擎,與開源Spark完全相容,您無需對現有代碼做任何修改即可開啟。

湖儲存加速

參數名稱

是否必填

預設值

參數說明

spark.adb.lakecache.enabled

false

是否開啟湖儲存加速(LakeCache)

AnalyticDB for MySQL不支援的配置參數

AnalyticDB for MySQLSpark暫不支援以下開源Spark的配置參數。這些配置參數對於AnalyticDB for MySQLSpark不會生效。

Useless options(these options will be ignored):
  --deploy-mode
  --master
  --packages, please use `--jars` instead
  --exclude-packages
  --proxy-user
  --repositories
  --keytab
  --principal
  --queue
  --total-executor-cores
  --driver-library-path
  --driver-class-path
  --supervise
  -S,--silent
  -i <filename>