胶水加载作业不保留红移中的默认列值
Posted
技术标签:
【中文标题】胶水加载作业不保留红移中的默认列值【英文标题】:Glue load job not retaining default column value in redshift 【发布时间】:2021-03-25 03:35:33 【问题描述】:我有一个 Glue 作业,将 S3 中的 CSV 加载到红移表中。有 1 列 (updated_date) 未映射。该列的默认值设置为 UTC 中的 current_timestamp。但是每次 Glue 作业运行时,这个 updated_date 列都是空的。
我尝试从 Glue 元数据表中删除 updated_dt。我尝试从 Glue 脚本中的 SelectFields.apply() 中删除 updated_dt。
当我在 Redshift 中执行正常插入语句而不使用 updated_dt 列时,将为这些行插入默认的 current_timestamp() 值。
谢谢
【问题讨论】:
【参考方案1】:好吧,我也遇到了同样的问题。 AWS 支持告诉我将 Glue DynamicFrame 转换为 Spark DataFrame 并使用 Spark 编写器将数据加载到 Redshift:
SparkDF = GlueDynFrame.toDF()
SparkDF.write.format('jdbc').options(
url = ‘<‘JDBC url>’,
dbtable=‘<schema>.<table>’,
user=‘<username>’,
password=‘<password>’).mode(‘append’).save()
另一方面,我通过使用 preactions 删除和创建目标表或仅使用一些更新来设置 postactions 中的默认值来解决问题。
【讨论】:
以上是关于胶水加载作业不保留红移中的默认列值的主要内容,如果未能解决你的问题,请参考以下文章