从aws Glue Script调用存储过程

时间:2017-10-22 04:40:48

标签: amazon-web-services apache-spark amazon-s3 aws-lambda aws-glue

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

我正在使用PySpark从S3获取数据并存储在临时表中。在此过程之后,需要调用存储过程。此存储过程将登台表中的数据加载到相应的MDS表中。

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

3 个答案:

答案 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。