如何使用trigger.once选项在spark 3 structure stream kafka/files源中配置backpreassure

yacmzcpb  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(265)

在spark 3中,kafka上的backpressure选项的行为和trigger.once场景更改的文件源。
但我有个问题。当我想使用triggeronce时,如何配置工作的反压力?
在Spark2.4中,我有一个用例,用于回填一些数据,然后启动流。所以我只使用了一次触发器,但我的回填场景可能非常大,有时会因为乱序而在磁盘上造成太大的负载,因为fileindex缓存在那里,所以会导致驱动程序内存太大。所以我用马克斯 maxOffsetsPerTrigger 以及 maxFilesPerTrigger 控制spark能处理多少数据。我就是这样配置背压的。
现在你移除了这个能力,所以假设有人可以提出一个新的方法?

q8l4jmvw

q8l4jmvw1#

Trigger.Once 现在忽略这些选项(在spark 3中),所以它总是在第一次加载时读取所有内容。
您可以解决这个问题—例如,您可以在触发器设置为periodic的情况下启动stream,使用诸如1小时之类的值,并且不执行 .awaitTermination ,但是有一个并行循环来检查第一批是否完成,并停止流。或者可以将其设置为连续模式,然后检查批是否有0行,然后终止流。在初始加载之后,您可以将流切换回trigger.once

相关问题