Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 具有Spark执行器的消息顺序_Apache Spark_Apache Kafka_Spark Streaming - Fatal编程技术网

Apache spark 具有Spark执行器的消息顺序

Apache spark 具有Spark执行器的消息顺序,apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,我有一个spark流媒体应用程序,可以从kafka流媒体传输数据。我严重依赖于消息的顺序,因此在kafka主题中只创建了一个分区 我正在群集模式下部署此作业 我的问题是:因为我是在集群模式下执行的,所以我可以让多个执行者拾取任务,在这种情况下,我会丢失从kafka接收的消息的顺序吗。如果没有,spark如何保证订单?使用单个分区维护订单是正确的选择,以下是您可以尝试的其他几点: 关闭投机性执行 spark.substitution-如果设置为“true”,则执行推测执行 一系列的任务。这意味着如

我有一个spark流媒体应用程序,可以从kafka流媒体传输数据。我严重依赖于消息的顺序,因此在kafka主题中只创建了一个分区

我正在群集模式下部署此作业


我的问题是:因为我是在集群模式下执行的,所以我可以让多个执行者拾取任务,在这种情况下,我会丢失从kafka接收的消息的顺序吗。如果没有,spark如何保证订单?

使用单个分区维护订单是正确的选择,以下是您可以尝试的其他几点:

  • 关闭投机性执行
  • spark.substitution-如果设置为“true”,则执行推测执行 一系列的任务。这意味着如果一个或多个任务在同一时间内运行缓慢 在舞台上,它们将被重新推出

  • 调整批处理间隔/大小,使其能够在没有任何延迟的情况下完成处理

  • 干杯

    分布式处理能力不可能只有一个分区,所以应该使用多个分区,我建议在每条消息上都附加序列号,无论是计数器还是时间戳。
    如果消息中没有时间戳,则kafka流提供了一种提取消息时间戳的方法,您可以使用它根据时间戳对事件排序,然后根据序列运行事件


    请参考

    上的答案,您必须编写自己的答案才能实现订购。你们有时间戳作为信息的一部分吗?