通过 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 脚本进行任何修改。下表列出了通过 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" } } } }