scala - 将数据插入到具有更改架构的增量表中
问题描述
如何在 Databricks 中使用更改模式将数据插入到增量表中。
在 Databricks Scala 中,我正在分解 Map 列并将其加载到增量表中。我有一个预定义的增量表架构。
假设架构有 4 列A
, B
, C
, D
。
因此,第一天,我使用以下代码将包含 4 列的数据框加载到增量表中。
loadfinaldf.write.format("delta").option("mergeSchema", "true")\
.mode("append").insertInto("table")
数据框中的列每天都在变化。例如,在第 2 天,添加了两个新列E
,F
但没有C
列。现在我在数据框中有 5 列A
, B
, D
, E
, F
。当我将此数据加载到增量表中时,列E
和F
应该在表模式中动态创建,并且相应的数据应该加载到这两个列中,并且列 C 应该填充为 NULL。我假设这spark.conf.set("spark.databricks.delta.schema.autoMerge","true")
将完成这项工作。但我无法做到这一点。
我的方法:我正在考虑列出预定义的增量模式和数据框模式,并在将其加载到增量表之前进行比较。
解决方案
你可以使用一些 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
推荐阅读
- .net - 您应该在 SQL Server 2016 中进行多次插入调用还是传递 XML?
- csv - 使用 CSV 标题行将 CSV 导入 FileMaker Pro 18
- django-rest-framework - django-rest-framework:每个 ViewSet 可以有多个模板吗?
- javascript - 具有多个值的 switch 语句
- postgresql - 如何将过滤器下推到视图的 group by 子句?
- android - Kotlin:协程运行阻塞中的滞后
- office365 - 如何使用客户端凭据通过团队会议 URL 在 Office 365 中创建事件
- node.js - 如何使用用户 ID 创建到电报配置文件的链接 - Node.js
- c# - 从一个寻路网格过渡到另一个
- android - 如果我在新帐户中使用新软件包名称重新发布旧应用程序,是否会违反模拟政策?