1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 有多种方法可以编排Glue作业。如下是一个在此场景下可行的架构示例:
使用StepFunctions执行一系列Glue作业。在下面的示例中,Lambda函数返回所有表名和其他Glue作业所需的输入,这些可以按照下面的说明传递给Glue作业。startJobRun.sync确保下一个步骤只在作业成功完成后开始执行。
{
"Comment": "Run Glue job workflow",
"StartAt": "Lambda Invoke",
"States": {
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$"
},
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"Next": "run_glue_job_1"
},
"run_glue_job_1": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "glue_job_1"
},
"Next": "run_glue_job_2",
"InputPath": "$.table_name_1"
},
"run_glue_job_2": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "glue_job_2"
},
"Next": "run_glue_job_3",
"InputPath": "$.table_name_2"
},
"run_glue_job_3": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "glue_job_3"
},
"End": true,
"InputPath": "$.table_name_3"
}
}
}
Glue workflow尚未具有使用不同参数多次运行相同作业的功能。因此,您可以创建多个工作流Workflow,每个工作流将使用不同参数调用相同作业,并基于先前工作流程的完成触发。
您也可以使用Lambda来使用输入参数触发作业,等待几分钟并检查作业是否完成,然后触发下一个作业。这种方法的问题是,Lambda在等待glue作业完成时会消耗计算资源。
另外还可以考虑使用Airflow(MWAA)进行编排。
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前