场景:
df1->Col1、Col2、Col3——它们是增量表中的列
df2->Col1、Col2、Col3、Col4、Col5——它们是最新刷新表中的列
- 如何动态获取具有数据类型的新列(在上面的Col4、Col5中(
- 如何动态更改现有的Delta表以包括新列(在上面的Col4、Col5中(并更新新列值
感谢您的帮助。
如果您有Delta表,则不需要执行显式ALTER TABLE
-您只需要使用内置的模式进化功能(博客文章(-只需添加值为true
的mergeSchema
选项,Delta将负责更新模式。例如,如果我有一个包含两个字段的初始表:i1
&i2
:
df1 = spark.createDataFrame([[1,2]], schema="i1 int, i2 int")
df1.write.format("delta").mode("overwrite").saveAsTable("test")
然后我可以更新它,即使我有更多的列:
df2 = spark.createDataFrame([[1,2, '1']], schema="i1 int, i2 int, v string")
df2.write.format("delta").mode("append")
.option("mergeSchema", "true").saveAsTable("test")
你可以找到更多关于模式进化的信息;以下博客文章和本次网络研讨会中的强制执行。