通过 AWS Glue 执行 Redshift 过程

Posted

技术标签:

【中文标题】通过 AWS Glue 执行 Redshift 过程【英文标题】:Executing a Redshift procedure through AWS Glue 【发布时间】:2020-07-08 03:54:19 【问题描述】:

我在 Redshift 上创建了存储过程,需要对其进行编排。 SP 包含用于创建 SCD 的 DML 语句,并且仅限于 Redshift。

AWS 上有没有办法通过 Glue 或任何其他 AWS 服务在 Redshift 上运行 SP?

由于我们在 RS 上没有触发器,我正在探索其他选项。非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

我认为您可以尝试使用 preactions/Postactions。 Preactions/Postactions 允许您在动态框架处理数据之前/之后执行 sql 命令。您可以提供一个以分号分隔的命令列表,例如只是普通的 sql 命令,您可以尝试使用相同的方法调用程序:

datasink5 = glueContext.write_dynamic_frame.from_jdbc_conf(frame = prod_dynamicframe, catalog_connection = "my_rdshft", connection_options = "preactions":"delete from dw.product_dim where sku in ('xxxxx,'bbbb');","dbtable": "dw.product_dim", "database": "DWBI","postactions":"truncate table ld_stg.ld_product_tbl;", redshift_tmp_dir = args["TempDir"], transformation_ctx = "datasink5")

This 也可能会有所帮助。

【讨论】:

【参考方案2】:

您可以尝试的一种方法是@Eman 提到的前置操作和后置操作,我还没有尝试过。

但我使用 psycopg2 来触发 redshift 上的存储过程。 只需压缩包装并传递给胶水。

建立一个jdbc连接

并使用callproc()函数调用存储过程。

找到它的用法https://www.psycopg.org/docs/usage.html

【讨论】:

以上是关于通过 AWS Glue 执行 Redshift 过程的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue to Redshift:是否可以替换,更新或删除数据?

AWS Glue 布尔转换

AWS Glue ETL 到 Redshift:日期

我可以使用AWS Glue将S3上的json数据转换为柱状格式并将其推送到Redshift吗?

将 Parquet 文件从 AWS Glue 加载到 Redshift

AWS Glue 作业将 Null 写入 Redshift