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