是否可以在Spark Streaming中强制执行有序处理?我们的用例是从Kafka读取事件,其中每个主题都需要按顺序处理。
据我所知,这是不可能的 - 每个流都被分解为RDD,而RDDS是并行处理的,所以没有办法保证秩序。
答案 0 :(得分:2)
您可以强制RDD成为单个分区,从而删除任何并行性。
答案 1 :(得分:1)
“我们的用例是从Kafka读取事件,其中每个主题都需要按顺序处理。”
根据我的理解,每个主题形成了分离的Dstreams。所以你应该一个接一个地处理每个Dstream。
但很可能你的意思是你想要按顺序处理你从1个Kafka主题获得的每个事件。在这种情况下,您不应该依赖于RDD中的记录顺序,而应该在您第一次看到它们时(可能是上游方式)使用时间戳标记每个记录,并使用此时间戳稍后进行排序。
你有其他选择,这是不好的:)