Spark Streaming RDD是否总是按顺序处理?

时间:2015-07-02 14:56:45

标签: spark-streaming

我正在编写一个使用RabbitMQ来消费事件的Spark Streaming应用程序。我打算使用的RabbitMQ的一个特性是批量消息,即不需要逐个确认,但只能批量处理批次中的最后一个事件,这会影响整个批处理。

在我承诺这样做之前,我想知道Spark Streaming是否总是按照它们到达的顺序处理RDD,即如果RDD1在RDD2之前到达,是否真的RDD2将永远不会在RDD1之前被调度/处理完了?

这对于ack逻辑至关重要,因为如果在RDD1仍在处理的情况下可以处理RDD2,那么如果我知道RDD2中的最后一个事件也会响应RDD1中的所有事件,即使它们可能没有已完全处理完毕。

1 个答案:

答案 0 :(得分:3)

默认情况下,只有在完成与批次X相关的所有重试等之后,才会启动批次X + 1。 ref

其他信息:在默认配置中也是如此。你可以 找到对未记录的隐藏配置的引用 spark.streaming.concurrentJobs邮件列表中的其他位置。设置 超过1以获得更多并发(在输出操作之间)中断 以上保证。 ref