使用 Spark Structured Streaming 时限制 kafka 批量大小

Limit kafka batch size when using Spark Structured Streaming

我们的主题有一些历史数据排队,我们不想在一个批次中处理所有这些数据,因为这样做比较难(如果失败,则必须重新开始!)。

此外,了解如何控制批量大小对调整作业非常有帮助。

当使用 DStreams 时,尽可能准确地控制批处理大小的方法是

相同的方法,即设置 maxRatePerPartition 然后调整 batchDuration 非常麻烦,但适用于 DStream 它根本不适用于结构化流。

理想情况下,我想知道像 maxBatchSizeminBatchSize 这样的配置,我可以在其中简单地设置我想要的记录数。

此配置选项maxOffsetsPerTrigger:

Rate limit on maximum number of offsets processed per trigger interval. The specified total number of offsets will be proportionally split across topicPartitions of different volume.

注意 如果您有一个包含开始和结束偏移量的检查点目录,那么应用程序将处理第一批目录中的偏移量,从而忽略此配置。 (下一批会尊重它)。

如果主题是分区的,并且所有分区都有消息,则您可以接收的最少消息等于主题中的分区数。 (即)如果它有数据,每个分区需要 1 条记录,如果只有一个分区有数据,那么你可以采取的最小记录是 1。如果主题没有分区,你可以采取最少 1 条记录,最多可以采取任何记录。