Apache spark 火花流中的顺序处理

Apache spark 火花流中的顺序处理,apache-spark,spark-streaming,Apache Spark,Spark Streaming,是否可以在Spark流媒体中实施顺序处理?我们的用例是从Kafka读取事件,其中每个主题都需要按顺序处理 据我所知,这是不可能的——每个数据流都被分解成RDD,并且RDD是并行处理的,所以无法保证顺序 您可以将RDD强制为单个分区,从而消除任何并行性。我们的用例是从Kafka读取事件,其中每个主题都需要按顺序处理 根据我的理解,每个主题形成一个独立的数据流。因此,您应该一个接一个地处理每个数据流 但最有可能的意思是,您希望按顺序处理从卡夫卡主题中获得的每个事件。在这种情况下,您不应该依赖于RDD

是否可以在Spark流媒体中实施顺序处理?我们的用例是从Kafka读取事件,其中每个主题都需要按顺序处理


据我所知,这是不可能的——每个数据流都被分解成RDD,并且RDD是并行处理的,所以无法保证顺序

您可以将RDD强制为单个分区,从而消除任何并行性。

我们的用例是从Kafka读取事件,其中每个主题都需要按顺序处理

根据我的理解,每个主题形成一个独立的数据流。因此,您应该一个接一个地处理每个数据流

但最有可能的意思是,您希望按顺序处理从卡夫卡主题中获得的每个事件。在这种情况下,您不应该依赖于RDD中记录的顺序,而是应该在第一次看到记录时(可能是在上游)用时间戳标记每个记录,并在以后使用此时间戳进行排序

您还有其他不好的选择:)

  • 正如霍尔顿所建议的,把所有东西都放在一个分区中
  • 分区根据接收时间增加一些函数,所以您可以一个接一个地填充分区。然后您可以可靠地使用zipWithIndex

  • 但是数据流被分解成RDD——难道第二个RDD不可能在第一个RDD之前完成处理吗?根据文档“默认情况下,输出操作一次执行一个。并且按照应用程序中定义的顺序执行。”