【问题标题】:Spark Streaming - Batch Interval vs Processing timeSpark Streaming - 批处理间隔与处理时间
【发布时间】:2017-06-24 19:33:27
【问题描述】:

我们有一个Spark Streaming application 在 YARN 集群上运行。

它接收来自Kafka topics的消息。

其实我们的处理时间比批处理间隔要长。

Batch Interval : 1 Minute
Processing Time : 5 Minutes

我想知道,如果在处理时间之间接收到一些数据会发生什么,在处理结束之前内存中的数据是否可用。还是会在后续的数据抓取中被覆盖?

我们正在使用Direct Streaming approach 从 Kafka 主题中获取数据。

我应该使用Window based 操作吗?例如,如果我有Window length as 5 Minutes and Sliding interval as 2 Minutes and Batch Interval as 1 Minute,它会工作吗?因为我们不能丢失应用程序中的任何数据。

【问题讨论】:

    标签: scala apache-kafka spark-streaming kafka-consumer-api


    【解决方案1】:

    在直接流式传输方法中,接收方不会读取数据,然后将其分派给其他工作人员。发生的情况是驱动程序从 Kafka 读取偏移量,然后将要读取的偏移量子集发送给每个分区。

    如果您的工作人员尚未处理完上一个作业,他们将不会开始处理下一个作业(除非您明确将 spark.streaming.concurrentJobs 设置为大于 1)。这意味着将读取偏移量,但实际上不会分派给负责读取数据的执行程序,因此不会有任何数据丢失。

    这确实意味着您的工作将无限迟到并导致大量处理延迟,这不是您想要的。根据经验,任何 Spark 作业的处理时间都应该小于为该作业设置的时间间隔。

    【讨论】:

      猜你喜欢
      • 2017-05-02
      • 2016-06-07
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      相关资源
      最近更新 更多