ETL 作业完成后,在 AWS Glue 脚本中调用存储过程的最佳方式是什么?
我正在使用 PySpark 从 S3 获取数据并存储在临时表中。完成此过程后,需要调用存储过程。此存储过程将数据从临时表加载到相应的 MDS 表中。
如果我必须在 ETL 作业完成后调用存储过程,最好的方法是什么?如果我考虑 AWS lambda,有什么方法可以在 ETL 之后通知 lambda。
py4j来完成,并且所有代码都将集中在一个地方,恕我直言,比其他解决方案更好的解决方案
如何使用 AWS Glue 运行任意/DDL SQL 语句或存储过程
您可以使用 boto sdk 在胶水 ETL 作业结束时触发您的 lambda。由于您要写入临时表,因此还需要在连接的子网上有一个 NAT 网关,以便 boto 调用正常工作。此链接中的示例使用 boto 触发 ECS 任务,这将是一个类似的过程:https://github.com/full360/glue-sneaql-demo/blob/master/Glue-Job-Script。
直接使用 SDK 可避免设置额外的基础设施并对其进行协调,但有时这是不可能的(网络、安全、架构等)。
在这种情况下,您可以设置 Cloudwatch 规则,以便在作业的状态更改为 SUCCESSED 时触发 Lambda。
事件模式:
{
"detail-type": [
"Glue Job State Change"
],
"source": [
"aws.glue"
],
"detail": {
"state": [
"SUCCEEDED"
]
}
}
并在此事件上触发 Lambda。