首页 > 解决方案 > 将数据插入到具有更改架构的增量表中

问题描述

如何在 Databricks 中使用更改模式将数据插入到增量表中。

在 Databricks Scala 中,我正在分解 Map 列并将其加载到增量表中。我有一个预定义的增量表架构。

假设架构有 4 列A, B, C, D

因此,第一天,我使用以下代码将包含 4 列的数据框加载到增量表中。

loadfinaldf.write.format("delta").option("mergeSchema", "true")\
       .mode("append").insertInto("table")

数据框中的列每天都在变化。例如,在第 2 天,添加了两个新列EF但没有C列。现在我在数据框中有 5 列A, B, D, E, F。当我将此数据加载到增量表中时,列EF应该在表模式中动态创建,并且相应的数据应该加载到这两个列中,并且列 C 应该填充为 NULL。我假设这spark.conf.set("spark.databricks.delta.schema.autoMerge","true")将完成这项工作。但我无法做到这一点。

我的方法:我正在考虑列出预定义的增量模式和数据框模式,并在将其加载到增量表之前进行比较。

标签: scalapysparkdatabricks

解决方案


你可以使用一些 Python 逻辑吗?

result = pd.concat([df1, df2], axis=1, join="inner")

然后,将您的数据框推送到动态创建的 SQL 表中?

https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_sql.html


推荐阅读