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