本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Step Functions 调用 Amazon EMR Serverless
Step Functions 可以直接从 Amazon States Language (ASL) 控制某些 Amazon 服务。要了解更多信息,请参阅使用其他服务和将参数传递给服务 API。
优化的 EMR Serverless 集成与 EMR Serverless Amazon 开发工具包集成有何不同
-
优化的 EMR Serverless 服务集成有一组自定义的 API,用于封装底层的 EMR Serverless API。由于这种自定义,优化的EMR Serverless集成与 EMR Serverless Amazon SDK 服务集成有很大不同。此外,优化的 EMR Serverless 集成支持运行作业 (.sync) 集成模式。
-
不支持等待具有任务令牌的回调集成模式。
EMR Serverless 服务集成 API
要将 Amazon Step Functions 与 EMR Serverless 集成,您可以以下六个服务集成 API。这些服务集成 API 与相应的 EMR Serverless API 相似,但在传递的字段和返回的响应方面有所不同。
下表描述了每个服务集成 API 及其相应 EMR Serverless API 之间的差异。
EMR Serverless 服务集成 API 和相应的 EMR Serverless API | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
EMR Serverless 服务集成 API | 相应的 EMR Serverless API | 差异 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createApplication 创建应用程序。 EMR Serverless 与一种独特类型的 IAM 角色(称为服务相关角色)关联。要使 |
CreateApplication | 无 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createApplication.sync 创建应用程序。 |
CreateApplication |
EMR Serverless API 和 EMR Serverless 服务集成 API 的请求和响应之间没有区别。但是,createApplication.sync 会等待应用程序进入 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startApplication 启动指定的应用程序并初始化该应用程序的初始容量(如果已配置)。 |
StartApplication |
EMR Serverless API 响应不包含任何数据,但 EMR Serverless 服务集成 API 响应包含以下数据。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startApplication.sync 启动指定的应用程序并初始化初始容量(如果已配置)。 |
StartApplication |
EMR Serverless API 响应不包含任何数据,但 EMR Serverless 服务集成 API 响应包含以下数据。
此外,startApplication.sync 会等待应用程序进入 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stopApplication 停止指定的应用程序并释放初始容量(如果已配置)。在停止应用程序之前,必须完成或取消所有已计划和正在运行的作业。 |
StopApplication |
EMR Serverless API 响应不包含任何数据,但 EMR Serverless 服务集成 API 响应包含以下数据。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stopApplication.sync 停止指定的应用程序并释放初始容量(如果已配置)。在停止应用程序之前,必须完成或取消所有已计划和正在运行的作业。 |
StopApplication |
EMR Serverless API 响应不包含任何数据,但 EMR Serverless 服务集成 API 响应包含以下数据。
此外,stopApplication.sync 会等待应用程序进入 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deleteApplication 删除应用程序 应用程序必须处于 |
DeleteApplication |
EMR Serverless API 响应不包含任何数据,但 EMR Serverless 服务集成 API 响应包含以下数据。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deleteApplication.sync 删除应用程序 应用程序必须处于 |
DeleteApplication |
EMR Serverless API 响应不包含任何数据,但 EMR Serverless 服务集成 API 响应包含以下数据。
此外,stopApplication.sync 会等待应用程序进入 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startJobRun 启动作业运行。 |
StartJobRun | 无 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startJobRun.sync 启动作业运行。 |
StartJobRun |
EMR Serverless API 和 EMR Serverless 服务集成 API 的请求和响应之间没有区别。但是,startJobRun.sync 会等待应用程序进入状态。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cancelJobRun 取消作业运行。 |
CancelJobRun | 无 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cancelJobRun.sync 取消作业运行。 |
CancelJobRun |
EMR Serverless API 和 EMR Serverless 服务集成 API 的请求和响应之间没有区别。但是,cancelJobRun.sync 会等待应用程序进入状态。 |
EMR 无服务器集成用例
对于优化的 EMR Serverless 服务集成,我们建议您创建单个应用程序,然后使用该应用程序运行多个作业。例如,在单个状态机中,您可以包含多个startJobRun请求,所有这些请求都使用同一个应用程序。以下 任务状态 状态示例显示了将 EMR Serverless API 与 Step Functions 集成的用例。有关 EMR Serverless 其他用例的信息,请参阅什么是 Amazon EMR Serverless。
提示
要将与集成EMR Serverless用于运行多个作业的状态机示例部署到您的中 Amazon Web Services 账户,请参阅运行 EMR Serverless 作业。
有关在与其他 Amazon 服务Step Functions一起使用时如何配置IAM权限的信息,请参阅集成服务的 IAM 策略。
在以下用例所示的示例中,请将斜体文本
替换为特定于资源的信息。例如,yourApplicationId
替换为EMR Serverless应用程序的 ID,例如00yv7iv71inak893
。
创建应用程序
以下 Task 状态示例使用 createApplication.sync 服务集成 API 创建了一个应用程序。
"Create_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:createApplication.sync", "Parameters": { "Name": "
MyApplication
", "ReleaseLabel": "emr-6.9.0", "Type": "SPARK" }, "End": true }
启动应用程序
以下 Task 状态示例使用 startApplication.sync 服务集成 API 启动应用程序。
"Start_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:startApplication.sync", "Parameters": { "ApplicationId": "
yourApplicationId
" }, "End": true }
停止应用程序
以下 Task 状态示例使用 stopApplication.sync 服务集成 API 停止应用程序。
"Stop_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:stopApplication.sync", "Parameters": { "ApplicationId": "
yourApplicationId
" }, "End": true }
删除应用程序
以下 Task 状态示例使用 deleteApplication.sync 服务集成 API 删除应用程序。
"Delete_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:deleteApplication.sync", "Parameters": { "ApplicationId": "
yourApplicationId
" }, "End": true }
启动应用程序中的作业
以下任务状态示例使用 startJobRun.sync 服务集成 API 在应用程序中启动作业。
"Start_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:startJobRun.sync", "Parameters": { "ApplicationId": "
yourApplicationId
", "ExecutionRoleArn": "arn:aws:iam::123456789012:role/myEMRServerless-execution-role
", "JobDriver": { "SparkSubmit": { "EntryPoint": "s3://<mybucket>
/sample.py
", "EntryPointArguments": ["1"], "SparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=4g --conf spark.driver.cores=2 --conf spark.driver.memory=4g --conf spark.executor.instances=1" } } }, "End": true }
取消应用程序中的作业
以下任务状态示例使用 cancelJobRun.sync 服务集成 API 取消应用程序中的作业。
"Cancel_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:cancelJobRun.sync", "Parameters": { "ApplicationId.$": "$.ApplicationId", "JobRunId.$": "$.JobRunId" }, "End": true }