如何在 Spark 结构化流中使用流数据帧更新静态数据帧

Swa*_*rup 5 apache-spark apache-spark-sql spark-structured-streaming

我有一个DataFrame包含数百万行的静态数据,如下所示。

静态DataFrame

--------------
id|time_stamp|
--------------
|1|1540527851|
|2|1540525602|
|3|1530529187|
|4|1520529185|
|5|1510529182|
|6|1578945709|
--------------
Run Code Online (Sandbox Code Playgroud)

现在,在每个批次中,DataFrame正在形成一个 Streaming ,其中包含 id 和更新的 time_stamp,经过如下所示的一些操作。

在第一批:

--------------
id|time_stamp|
--------------
|1|1540527888|
|2|1540525999|
|3|1530529784|
--------------
Run Code Online (Sandbox Code Playgroud)

现在,在每个批次中,我都想使用 Streaming Dataframe 的更新值更新静态 DataFrame,如下所示。怎么做?

第一批后的静态 DF:

--------------
id|time_stamp|
--------------
|1|1540527888|
|2|1540525999|
|3|1530529784|
|4|1520529185|
|5|1510529182|
|6|1578945709|
--------------
Run Code Online (Sandbox Code Playgroud)

我已经尝试过except()、union() 或 'left_anti' join。但似乎结构化流媒体不支持此类操作

Swa*_*rup 1

因此,我通过 Spark 2.4.0 AddBatch 方法解决了这个问题,该方法将流数据帧转换为迷你批数据帧。但对于<2.4.0版本来说还是很头疼。