【发布时间】:2015-06-05 08:25:22
【问题描述】:
是否可以在 Spark Streaming 中强制执行有序处理?我们的用例是从 Kafka 读取事件,其中每个主题都需要按顺序处理。
据我所知,这是不可能的 - 每个流都分解成 RDD,并且 RDDS 是并行处理的,因此无法保证顺序。
【问题讨论】:
标签: apache-spark spark-streaming
是否可以在 Spark Streaming 中强制执行有序处理?我们的用例是从 Kafka 读取事件,其中每个主题都需要按顺序处理。
据我所知,这是不可能的 - 每个流都分解成 RDD,并且 RDDS 是并行处理的,因此无法保证顺序。
【问题讨论】:
标签: apache-spark spark-streaming
您可以强制 RDD 成为单个分区,这会消除任何并行性。
【讨论】:
“我们的用例是从Kafka读取事件,每个主题都需要按顺序处理。”
据我了解,每个主题形成单独的 Dstream。所以你应该一个接一个地处理每个 Dstream。
但很可能您的意思是您希望按顺序处理从 1 个 Kafka 主题获得的每个事件。在这种情况下,您不应该依赖 RDD 中记录的顺序,而是应该在第一次看到它们时(可能在上游)用时间戳标记每条记录,并在以后使用此时间戳进行排序。
你还有其他选择,但很糟糕:)
【讨论】: