提问人:user1668814 提问时间:11/17/2023 更新时间:11/19/2023 访问量:33
Iceberg 架构不合并缺失的列
Iceberg schema not merging missing columns
问:
我正在 AWS Glue 作业中使用以下代码创建 Iceberg 表:
df.writeTo(f'glue_catalog.{DATABASE_NAME}.{TABLE_NAME}') \
.using('iceberg') \
.tableProperty("location", TABLE_LOCATION) \
.tableProperty("write.spark.accept-any-schema", "true") \
.tableProperty("format-version", "2") \
.createOrReplace()
表格已创建,我可以在 Glue/LF 中看到它,并且可以在 Athena 中查询它。
我有另一项工作,正在尝试使用以下内容更新插入数据:
df_upsert.createOrReplaceTempView("upsert_items")
upsert_query = f"""
MERGE INTO glue_catalog.{DATABASE_NAME}.{TABLE_NAME} target
USING (SELECT * FROM upsert_items) updates
ON {join_condidtion}
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *
"""
spark.sql(upsert_query)
GlueJob 失败并说:
AnalysisException: cannot resolve my_column in MERGE command given columns [updates.col1, updates.col2, ...
当可能缺少列或可能添加列时,如何合并新数据。我以为 Iceberg 会通过为缺失/新列填写 NULL 来处理这个问题,因为我设置了“write.spark.accept-any-schema” = true。谢谢。
运行 Spark 版本 3.3.0-amzn-1
AWS GlueJob v4
Iceberg v1.0.0
答:
评论