在 Spark 2.x 中加入结构化流中的两个流的解决方法
Workaround for joining two streams in structured streaming in Spark 2.x
我有一个配置流(不经常更改,但如果有更新,它会是一条消息)和另一个原始数据点流。
据我了解,目前 spark 不支持加入流数据集或数据帧。有解决此问题的好方法吗?
是否可以 "snapshot" 将其中一个流数据集转换为静态数据集(可能是配置数据集,因为它更新较少),然后与另一个流数据集连接?
接受建议!
"Workaround" 是使用当前的 master 分支 ;)
还没有发布,但是当前master分支已经有stream-stream inner join,还有outer join正在进行中。请参阅 this Jira 票证以供参考,在子任务中您会看到可能要使用的连接。
没有其他简单的解决方法。流连接需要保存流的状态,然后正确更新状态。你可以在pull requests中看到代码,实现stream-stream join是相当复杂的。
这就是我最后要做的事情。
将更新较少的流放入内存槽。然后从 table 做一个 select。此时,它是一个静态实例,可以与其他流连接。无需触发。当然,你需要自己正确更新table。
这不是很稳健,但这是我在官方支持之前能想到的最好的。
我有一个配置流(不经常更改,但如果有更新,它会是一条消息)和另一个原始数据点流。
据我了解,目前 spark 不支持加入流数据集或数据帧。有解决此问题的好方法吗?
是否可以 "snapshot" 将其中一个流数据集转换为静态数据集(可能是配置数据集,因为它更新较少),然后与另一个流数据集连接?
接受建议!
"Workaround" 是使用当前的 master 分支 ;)
还没有发布,但是当前master分支已经有stream-stream inner join,还有outer join正在进行中。请参阅 this Jira 票证以供参考,在子任务中您会看到可能要使用的连接。
没有其他简单的解决方法。流连接需要保存流的状态,然后正确更新状态。你可以在pull requests中看到代码,实现stream-stream join是相当复杂的。
这就是我最后要做的事情。
将更新较少的流放入内存槽。然后从 table 做一个 select。此时,它是一个静态实例,可以与其他流连接。无需触发。当然,你需要自己正确更新table。
这不是很稳健,但这是我在官方支持之前能想到的最好的。