Spark Streaming RDD 是否总是按顺序处理?
Are Spark Streaming RDDs always processed in order?
我正在编写一个使用 RabbitMQ 来使用事件的 Spark Streaming 应用程序。我打算利用的 RabbitMQ 的一个特性是批量确认消息,即不需要一个接一个地确认,而只确认一批中的最后一个事件,这将确认整个批次。
在我承诺这样做之前,我想知道 Spark Streaming 是否总是按照它们到达的相同顺序处理 RDD,即如果 RDD1 在 RDD2 之前到达,RDD2 是否永远不会 scheduled/processed 在 RDD1 完成之前?
这对 ack 逻辑至关重要,因为如果 RDD2 可以在 RDD1 仍在处理的同时被处理,那么如果我确认 RDD2 中的最后一个事件也会确认 RDD1 中的所有事件,即使它们可能尚未完全处理。
我正在编写一个使用 RabbitMQ 来使用事件的 Spark Streaming 应用程序。我打算利用的 RabbitMQ 的一个特性是批量确认消息,即不需要一个接一个地确认,而只确认一批中的最后一个事件,这将确认整个批次。
在我承诺这样做之前,我想知道 Spark Streaming 是否总是按照它们到达的相同顺序处理 RDD,即如果 RDD1 在 RDD2 之前到达,RDD2 是否永远不会 scheduled/processed 在 RDD1 完成之前?
这对 ack 逻辑至关重要,因为如果 RDD2 可以在 RDD1 仍在处理的同时被处理,那么如果我确认 RDD2 中的最后一个事件也会确认 RDD1 中的所有事件,即使它们可能尚未完全处理。