通过 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将S3上的json数据转换为柱状格式并将其推送到Redshift吗?