我正在编写一个使用RabbitMQ来消费事件的Spark Streaming应用程序。我打算使用的RabbitMQ的一个特性是批量消息,即不需要逐个确认,但只能批量处理批次中的最后一个事件,这会影响整个批处理。
在我承诺这样做之前,我想知道Spark Streaming是否总是按照它们到达的顺序处理RDD,即如果RDD1在RDD2之前到达,是否真的RDD2将永远不会在RDD1之前被调度/处理完了?
这对于ack逻辑至关重要,因为如果在RDD1仍在处理的情况下可以处理RDD2,那么如果我知道RDD2中的最后一个事件也会响应RDD1中的所有事件,即使它们可能没有已完全处理完毕。