【问题标题】:How does the default (unspecified) trigger determine the size of micro-batches in Structured Streaming?默认(未指定)触发器如何确定结构化流中微批量的大小?
【发布时间】:2019-08-23 16:50:46
【问题描述】:

当Spark Structured Streaming中的查询执行没有关于触发器的设置时,

import org.apache.spark.sql.streaming.Trigger

// Default trigger (runs micro-batch as soon as it can)
df.writeStream
  .format("console")
  //.trigger(???) // <--- Trigger intentionally omitted ----
  .start()

从 Spark 2.4.3(2019 年 8 月)开始。 Structured Streaming Programming Guide - Triggers

如果没有明确指定触发设置,那么默认情况下,查询将以微批处理模式执行,其中微批处理将在前一个微批处理完成后立即生成。

问题:默认触发器在什么基础上确定微批次的大小?

让我们说。输入源是 Kafka。由于一些中断,这项工作被中断了一天。然后重新启动相同的 Spark 作业。然后它将在它离开的地方消费消息。这是否意味着第一个微批次将是一个巨大的批次,其中包含 1 天的 msg 在作业停止时累积在 Kafka 主题中?假设这项工作需要 10 个小时来处理那个大批量,那么下一个微批量有 10 小时的消息?并逐渐直到 X 次迭代以赶上积压以到达更小的微批次。

【问题讨论】:

    标签: apache-spark spark-structured-streaming


    【解决方案1】:

    默认触发器在什么基础上确定微批次的大小?

    它没有。每个触发器(无论多长)都简单地请求输入数据集的所有源,并且它们提供的任何内容都由操作员在下游处理。消息来源知道要提供什么,因为他们知道到目前为止已经消耗(处理)了什么。

    就好像您询问了批量结构化查询以及此单个“触发器”请求处理的数据大小(顺便说一句,有ProcessingTime.Once 触发器)。

    这是否意味着第一个微批次将是一个巨大的批次,在作业停止时会在 Kafka 主题中累积 1 天的 msg?

    几乎(与​​ Spark Structured Streaming 几乎没有任何关系)。

    底层 Kafka 消费者要处理的记录数由 max.poll.records 配置,也可能由其他一些配置属性配置(参见 Increase the number of messages read by a Kafka consumer in a single poll)。

    由于 Spark Structured Streaming 使用 Kafka 数据源,该数据源只是 Kafka Consumer API 的包装器,因此在单个微批处理中发生的任何事情都等同于单个 Consumer.poll 调用。

    您可以使用带有 kafka. 前缀的选项(例如 kafka.bootstrap.servers)配置底层 Kafka 消费者,这些选项被考虑用于驱动程序和执行程序上的 Kafka 消费者。

    【讨论】:

    • 谢谢雅克。我认为这与 Spark SS 非常相关。因为在 Spark SS prog guide 中没有很好地解释微批处理如何在默认触发模式下获取输入数据。基本上,执行程序任务将在开始处理之前耗尽源输入。我们应该限制输入速率,以避免过多的数据使微批次过载(例如,执行程序中的 OOM 风险)。 maxRatePerPartition 可能是一个非常方便的选择 stackoverflow.com/a/41022481/657067
    • 也输入源df.readStream.format("kafka").option("maxOffsetsPerTrigger", &lt;longValue&gt;)来限制输入速率spark.apache.org/docs/latest/…
    猜你喜欢
    • 2020-09-19
    • 2014-01-07
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多