数据块:使用数据帧中的增量数据更新Azure SQL表

问题描述

我正在尝试通过存储在Azure Databricks上数据帧(具有数千行)中的增量数据将数据向上插入Azure sql事务表(具有成千上万行),其中增量数据存储了已经存在的行上次修改是昨天进行的,并且每天晚上作为批处理作业运行。两者之间的架构是相同的,只有主键列[id]。目标是在将数据框追加到Azure sql表之前,如果其[id]出现在增量数据数据框中,则要更新/删除Azure sql表中的行,以便使用新的/更新的事务来连续更新目标表。

我正在使用sql-spark-connecter将数据提取到数据框中,并且可以使用该连接器将数据框附加到pyspark上的Azure sql表上。

到目前为止,我正在考虑两种解决方法

  1. 将增量数据的[id]列转换为数组,删除目标Azure sql行(如果其出现​​在增量数组中),然后将增量数据帧附加到Azure sql表上。

    a。我遇到的问题是我缺乏利用杠杆[id]数组将这些行删除到带有连接器的Azure sql中的知识。该连接器仍在开发中,文档稀疏。

    b。从技术上讲,我可以使用连接器将整个目标表拉入pyspark数据帧,删除delta数据帧中的匹配[id](我也在pyspark上努力实现这一目标),然后将整个表覆盖回Azure天。但是,这绝对是非常低效的,并且浪费了计算能力,尤其是当表包含数千万个事务行时。

  2. 我发现了有关使用Delta表实现exactly what I need的数据块的文档。但是,这似乎仅适用于Delta Lake表,但是我想知道是否还有一种方法可以连接Azure sql表。

为基本问题表示歉意,但很乐意为您指出这一点!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)