通过 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 脚本进行任何修改。下表列出了通过 StartJobRun API 支持的 Spark SQL 任务的 Spark 参数。
您可以选择以下 Spark 参数发送到 Spark SQL 任务。使用这些参数覆盖默认 Spark 属性。
选项 | 描述 |
---|---|
--name NAME |
应用程序名称 |
-jars JARS | 以逗号分隔的 jar 列表,这些元素包含在驱动程序和执行程序的类路径中。 |
--packages | 以逗号分隔的 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 | 传递给驱动程序的额外类路径条目。 |
--executor-memory MEM | 每个执行器的内存。默认为 1GB。 |
--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
" } } } }