如何在数据加载之前截断 AWS Glue 作业中的 RDS 表?
Posted
技术标签:
【中文标题】如何在数据加载之前截断 AWS Glue 作业中的 RDS 表?【英文标题】:How do I truncate a RDS table in AWS Glue job before the data load? 【发布时间】:2019-07-17 13:49:33 【问题描述】:我使用 AWS Glue 作为 ETL 将数据加载到 RDS 表,这是一个每日快照表,需要在一天的数据加载之前截断。
我尝试了 DynamicFrameWriter 类中的“Preactions”参数,但看起来它只是 Redshift。
参考:https://aws.amazon.com/premiumsupport/knowledge-center/sql-commands-redshift-glue-job/#
【问题讨论】:
您可以尝试使用 Glue writer 将数据写入 RDS,然后使用 python jdbc 连接来截断表。 谢谢,我开始使用glue&python了。如果您能指导我参考有关如何在 Glue 作业中建立 python jdbc conn 的文档,将不胜感激。 我认为使用 Lambda 函数很可能是最好的解决方案。您可以在 Lambda 函数中执行 DROP/TRUNCATE 查询,然后在执行截断后执行 Glue 作业。此外,连接参数可以安全地存储在机密管理器中,而不是嵌入到 Glue 作业中(不确定 Glue 是否支持这一点)。我有一个 Lambda 函数,由将新的 CSV 数据拖放到 S3 触发,然后由 Glue 摄取到 RDS,所以这是我计划采取的路线。 【参考方案1】: conn = pymysql.connect(<URL>, user=<user_name>, passwd=<password>, db=<db_name>, connect_timeout=30)
print("mysql_connection")
print(conn)
with conn.cursor() as cur:
cur.execute("drop table if exists <tableName>")
conn.commit()
【讨论】:
以上是关于如何在数据加载之前截断 AWS Glue 作业中的 RDS 表?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Glue,加载到框架之前的数据过滤,命名 s3 对象
如何从aws glue pyspark作业中的嵌套数组中提取数据
AWS Glue to Redshift:是否可以替换,更新或删除数据?