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