Apache spark 具有Spark执行器的消息顺序
我有一个spark流媒体应用程序,可以从kafka流媒体传输数据。我严重依赖于消息的顺序,因此在kafka主题中只创建了一个分区 我正在群集模式下部署此作业Apache spark 具有Spark执行器的消息顺序,apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,我有一个spark流媒体应用程序,可以从kafka流媒体传输数据。我严重依赖于消息的顺序,因此在kafka主题中只创建了一个分区 我正在群集模式下部署此作业 我的问题是:因为我是在集群模式下执行的,所以我可以让多个执行者拾取任务,在这种情况下,我会丢失从kafka接收的消息的顺序吗。如果没有,spark如何保证订单?使用单个分区维护订单是正确的选择,以下是您可以尝试的其他几点: 关闭投机性执行 spark.substitution-如果设置为“true”,则执行推测执行 一系列的任务。这意味着如
我的问题是:因为我是在集群模式下执行的,所以我可以让多个执行者拾取任务,在这种情况下,我会丢失从kafka接收的消息的顺序吗。如果没有,spark如何保证订单?使用单个分区维护订单是正确的选择,以下是您可以尝试的其他几点:
干杯 分布式处理能力不可能只有一个分区,所以应该使用多个分区,我建议在每条消息上都附加序列号,无论是计数器还是时间戳。
如果消息中没有时间戳,则kafka流提供了一种提取消息时间戳的方法,您可以使用它根据时间戳对事件排序,然后根据序列运行事件
请参考上的答案,您必须编写自己的答案才能实现订购。你们有时间戳作为信息的一部分吗?