透過 StartJobRun API 執行 Spark SQL 指令碼 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過 StartJobRun API 執行 Spark SQL 指令碼

Amazon EMR on EKS 6.7.0 版及更高版本包含 Spark SQL 作業驅動程式,以便可以透過 StartJobRun API 來執行 Spark SQL 指令碼。您可以提供 SQL 進入點檔案,以使用 StartJobRun API 在 Amazon EMR on EKS 上執行 Spark SQL 查詢,而無需對現有的 Spark SQL 指令碼進行任何修改。下表列出了 Spark SQL 作業透過 StartJobRun API 支援的 Spark 參數。

可以從下面的 Spark 參數中選擇,以傳送到 Spark SQL 作業。使用這些參數來覆寫預設的 Spark 屬性。

選項 描述

--name NAME

Application Name (應用程式名稱)
--jars JARS 驅動程式和執行程式 classpath 隨附的以逗號分隔的 jar 清單。
--packages 驅動程式和執行程式 classpath 中包含以逗號分隔的 jar 的 maven 座標清單。
--exclude-packages 以逗號分隔的 groupId:artifactId 清單,在解決 –packages 中提供的相依性時排除,以避免相依性衝突。
--repositories 以逗號分隔的其他遠端儲存庫清單,用於搜尋 –packages 提供的 maven 座標。
--files FILES 要放置在每個執行程式的工作目錄中的以逗號分隔的檔案清單。
--conf PROP=VALUE Spark 組態屬性。
--properties-file FILE 要從中載入額外屬性的檔案路徑。
--driver-memory MEM 驅動程式的記憶體。預設值為 1024MB。
--driver-java-options 用於傳遞給驅動程式的額外 Java 選項。
--driver-library-path 用於傳遞給驅動程式的額外程式庫路徑條目。
--driver-class-path 用於傳遞給驅動程式的額外 classpath 條目。
--executor-memory MEM 每個執行程式的記憶體。預設值為 1 GB。
--driver-cores NUM 驅動程式使用的核心數目。
--total-executor-cores NUM 所有執行程式的核心總數。
--executor-cores NUM 每個執行程式使用的核心數量。
--num-executors NUM 要啟動的執行程式數量。
-hivevar <key=value> 套用於 Hive 命令的變數替換,例如,-hivevar A=B
-hiveconf <property=value> 用於指定屬性的值。

若為 Spark SQL 作業,請建立 start-job-run-request.json 檔案,並指定作業執行所需的參數,如下列範例所示:

{ "name": "myjob", "virtualClusterId": "123456", "executionRoleArn": "iam_role_name_for_job_execution", "releaseLabel": "emr-6.7.0-latest", "jobDriver": { "sparkSqlJobDriver": { "entryPoint": "entryPoint_location", "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.driver.memory":"2G" } } ], "monitoringConfiguration": { "persistentAppUI": "ENABLED", "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group", "logStreamNamePrefix": "log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://my_s3_log_location" } } } }