通过 StartJobRun API 运行 Spark SQL 脚本 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过 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

Application 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" } } } }