我在mapWithState中保留了一个由String作为键和一个包含数组作为State的Object组成的对。如果出现包含相同键的新流,我将更新数组。如果spark应用程序在多个节点上运行,它们是否有可能将数组更新两次的可能性,还是spark一次只允许一个节点更新状态?我现在不完全了解mapWithState执行模型的工作方式。

谢谢!

最佳答案

将为每个键值对调用StateSpec函数,因此每批可以有多个更新,但是单个更新是连续的,并且可以对分区数据进行操作,因此如果您担心此问题,则不会有更新冲突。

09-26 17:12