AnalyticDB for MySQLSpark配置參數跟開源Spark中的配置參數基本一致。本文介紹AnalyticDB for MySQL與開源Spark用法不一致的配置參數。
使用說明
Spark應用配置參數用於配置和調整Spark應用程式的行為和效能。使用不同的Spark開發工具,應用配置參數的格式不同。
開發工具 | 配置參數格式 | 配置參數樣本 |
SQL開發編輯器 | set key=value; |
|
Spark Jar開發編輯器 | "key": "value" |
|
Notebook開發編輯器 | "key": "value" |
|
spark-submit命令列工具 | key=value |
|
指定Driver和Executor資源
參數名稱 | 是否必填 | 參數說明 | 對應開源Spark參數名稱 |
spark.driver.resourceSpec | 是 | Spark driver的資源規格。不同型號的取值對應不同的規格,詳情請參見Spark資源規格列表的型號列。 重要 提交Spark應用時,可使用開源Spark參數,且取值需為Spark資源規格列表中的核心數和記憶體。 例如 | spark.driver.cores及spark.driver.memory |
spark.executor.resourceSpec | 是 | Spark executor的資源規格。不同型號的取值對應不同的規格,詳情請參見Spark資源規格列表的型號列。 重要 提交Spark應用時,可使用開源Spark參數,且取值需為Spark資源規格列表中的核心數和記憶體。 例如 | spark.executor.cores及spark.executor.memory |
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作業優先順序
參數名稱 | 是否必填 | 預設值 | 參數說明 |
spark.adb.priority | 否 | NORMAL | 指定Spark作業的優先順序。當因資源不足導致Spark作業排隊執行時,等待隊列中優先順序更高的Spark作業優先擷取運行資源,從而保障其能更早進入執行狀態。取值說明:
重要 建議設定Streaming類(長期啟動並執行流作業)Spark作業的優先順序為HIGH。 |
串連中繼資料服務
參數名稱 | 是否必填 | 預設值 | 參數說明 |
spark.sql.catalogImplementation | 否 |
| 指定串連中繼資料服務的類型,支援如下配置:
|
spark.sql.hive.metastore.version | 否 |
| 指定採用中繼資料服務版本,支援如下配置:
說明
|
樣本
串連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 | 否 |
| 儲存AnalyticDB for MySQLSpark作業日誌及Linux作業系統輸出內容的路徑。 預設OSS路徑Spark應用ID的檔案夾下儲存的內容如下:
|
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.maxWaitOnEndSecs | 否 | 10 | Event上傳到OSS的最大等待時間,單位為秒。最大等待時間為開始上傳到完成上傳的時間間隔。超過最大等待時間會重新上傳。 |
spark.adb.event.waitForPendingPayloadsSleepIntervalSecs | 否 | 1 | 重新上傳Event完成的最大時間,單位為秒。在超過 |
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。 |
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訪問開關。取值說明:
|
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資料來源,則需要傳入此參數。 說明
|
spark.adb.eni.adbHostAlias.enabled | 否 | false | 是否開啟自動將AnalyticDB for MySQL服務所需要的網域名稱解析資訊寫入到網域名稱映射表中。取值說明:
在通過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的版本。取值:
|
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>