4

在 Spark 3 Behave of backpressure option on Kafka 和 File Source for trigger.once 场景发生了变化

但我有一个问题。当我想使用 TriggerOnce 时,如何为我的工作配置背压?

在 spark 2.4 我有一个用例,回填一些数据,然后启动流。所以我使用了一次触发器,但我的回填场景可能非常大,有时会因为洗牌和驱动程序内存而在我的磁盘上产生太大的负载,因为 FileIndex 缓存在那里。所以我使用 maxmaxOffsetsPerTriggermaxFilesPerTrigger控制我的 spark 可以处理多少数据。这就是我配置背压的方式。

现在你移除了这个能力,所以假设有人可以提出一个新的方法吗?

4

1 回答 1

1

Trigger.Once现在忽略这些选项(在 Spark 3 中),所以它总是会在第一次加载时读取所有内容。

您可以解决该问题 - 例如,您可以将触发器设置为周期性启动流,使用某个值,例如 1 小时,并且不执行.awaitTermination,但有一个并行循环将检查第一批是否完成,并停止流. 或者您可以将其设置为连续模式,然后检查批次是否为 0 行,然后终止流。在初始加载之后,您可以将流切换回 Trigger.Once

于 2021-03-24T08:46:26.467 回答