每 1 分钟触发一次 Glue ETL 作业
Trigger Glue ETL jobs every 1 minute
我想每 1 分钟触发一次粘合 ETL 作业。
我发现有一个 Schedule 触发器,但最短时间是 5 分钟。
有什么解决方法吗?我可以看到有一个按需触发器,可以从 lambda 函数调用吗?
如果您使用 CloudFormation templates 可以指定 cron 表达式:
Resources:
YourJobNameTrigger:
Type: AWS::Glue::Trigger
Properties:
Name: YourJobNameTriggerName
Type: SCHEDULED
Description: Daily scheduled trigger
Schedule: cron(*/1 * * * ? *)
Actions:
- JobName:
Ref: YourJobName
如果这对您不起作用,则可以使用 lambda 函数解决。您可以创建一个由 cloudwatch 事件触发的 lambda 函数(cron 每 1 分钟),使用 boto3 模块粘合方法start_job_run
,
这是 lmabda 函数的语法示例,如下所示:
import boto3
glue= boto3.client('glue')
def lambda_handler(event, context):
response = glue.start_job_run(JobName='string')
P.S:--
而且你还需要有 **
"concurrency limit" increase for your jobs.
** 这只能通过联系 Amazon 支持并要求他们增加作业并发来实现,然后只有你可以 运行 多个作业 运行 一个作业。因为在这里你想每分钟触发一个工作,这意味着当另一个工作 运行 正在进行时你需要有新的工作 运行 (这只是工作的并发数量 运行 s)
我想每 1 分钟触发一次粘合 ETL 作业。
我发现有一个 Schedule 触发器,但最短时间是 5 分钟。
有什么解决方法吗?我可以看到有一个按需触发器,可以从 lambda 函数调用吗?
如果您使用 CloudFormation templates 可以指定 cron 表达式:
Resources:
YourJobNameTrigger:
Type: AWS::Glue::Trigger
Properties:
Name: YourJobNameTriggerName
Type: SCHEDULED
Description: Daily scheduled trigger
Schedule: cron(*/1 * * * ? *)
Actions:
- JobName:
Ref: YourJobName
如果这对您不起作用,则可以使用 lambda 函数解决。您可以创建一个由 cloudwatch 事件触发的 lambda 函数(cron 每 1 分钟),使用 boto3 模块粘合方法start_job_run
,
这是 lmabda 函数的语法示例,如下所示:
import boto3
glue= boto3.client('glue')
def lambda_handler(event, context):
response = glue.start_job_run(JobName='string')
P.S:-- 而且你还需要有 **
"concurrency limit" increase for your jobs.
** 这只能通过联系 Amazon 支持并要求他们增加作业并发来实现,然后只有你可以 运行 多个作业 运行 一个作业。因为在这里你想每分钟触发一个工作,这意味着当另一个工作 运行 正在进行时你需要有新的工作 运行 (这只是工作的并发数量 运行 s)