我需要比较两个Dataframe。其中一个是静态的,另一个是流式的。示例静态Dataframe如下所示:
id, value
2786, 5
7252, 3
2525, 4
8038, 1
流式Dataframe示例如下所示:
id, value
2786, 9
7252, 8
2525, 7
结果Dataframe应如下所示:
id, value
8038, 1
价值根本不重要。我只需要找到,对于这个小批量,我没有指定id为8038的值。我尝试使用joins和subtract()函数,但问题是流-静态连接不支持我需要的连接类型,当静态Dataframe位于左侧时,subtract不起作用。例如,这些表达式将返回错误:
staticDF.subtract(streamingDF)
staticDF.join(streamingDF, staticDF.id = streamingDF.id, "left_anti")
有没有什么方法可以得到staticdf中的id,而不是spark structured streaming中的streamingdf中的id?
1条答案
按热度按时间bvhaajcl1#
您可以使用foreachbatch sink,然后对静态Dataframe和微批处理使用left-anti-join。
输入:
输出: