2

ETL 作业完成后,在 AWS Glue 脚本中调用存储过程的最佳方法是什么?

我正在使用 PySpark 从 S3 获取数据并存储在临时表中。在这个过程之后,需要调用一个存储过程。此存储过程将数据从临时表加载到适当的 MDS 表中。

如果我必须在 ETL 作业完成后调用存储过程,最好的方法是什么?如果我考虑 AWS lambda,有什么方法可以在 ETL 之后通知 lambda。

4

3 回答 3

2

您可以使用 py4j 来完成,您的所有代码都将在一个地方,恕我直言,比其他人更好的解决方案

如何使用 AWS Glue 运行任意/DDL SQL 语句或存储过程

于 2021-01-21T19:09:13.863 回答
1

您可以使用 boto sdk 在胶水 ETL 作业结束时触发您的 lambda。由于您正在写入临时表,因此您还需要在连接的子网上有一个 NAT 网关才能使 boto 调用正常工作。此链接中的示例使用 boto 来触发 ECS 任务,这将是一个类似的过程:https ://github.com/full360/glue-sneaql-demo/blob/master/Glue-Job-Script 。

于 2017-10-27T16:59:56.840 回答
0

直接使用 SDK 避免设置额外的基础设施和协调它,但有时这是不可能的(网络、安全、架构等)。

在这种情况下,您可以设置 Cloudwatch 规则以在作业状态更改为 SUCCEEDED 时触发 Lambda。

事件模式:

{
  "detail-type": [
    "Glue Job State Change"
  ],
  "source": [
    "aws.glue"
  ],
  "detail": {
    "state": [
      "SUCCEEDED"
    ]
  }
}

并在此事件上触发 Lambda。

于 2020-06-05T21:49:34.767 回答