在spark 3中,kafka上的backpressure选项的行为和trigger.once场景更改的文件源。
但我有个问题。当我想使用triggeronce时,如何配置工作的反压力?
在Spark2.4中,我有一个用例,用于回填一些数据,然后启动流。所以我只使用了一次触发器,但我的回填场景可能非常大,有时会因为乱序而在磁盘上造成太大的负载,因为fileindex缓存在那里,所以会导致驱动程序内存太大。所以我用马克斯 maxOffsetsPerTrigger
以及 maxFilesPerTrigger
控制spark能处理多少数据。我就是这样配置背压的。
现在你移除了这个能力,所以假设有人可以提出一个新的方法?
1条答案
按热度按时间q8l4jmvw1#
Trigger.Once
现在忽略这些选项(在spark 3中),所以它总是在第一次加载时读取所有内容。您可以解决这个问题—例如,您可以在触发器设置为periodic的情况下启动stream,使用诸如1小时之类的值,并且不执行
.awaitTermination
,但是有一个并行循环来检查第一批是否完成,并停止流。或者可以将其设置为连续模式,然后检查批是否有0行,然后终止流。在初始加载之后,您可以将流切换回trigger.once