【发布时间】: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