【发布时间】:2020-09-09 00:52:07
【问题描述】:
是否可以在 Spark Streaming 中每批记录只处理或触发一次方法/动作?
我的用例是每个 DStream 批次调用一次 loadConfigurations(),即使有 1 到 n 条记录。加载的配置应在驱动程序处可用以进行进一步处理。
例如:
batch-1: 运动流中的 0 条记录 - 没有触发 加载配置()
batch-2: kinesis 流中的 1 条记录 - loadConfiguration() 调用一次 以及在驱动程序级别更新的变量
batch-3:运动流中的 100 条记录 - 调用 loadConfiguration() 一次并在驱动程序级别更新变量
提前致谢。
【问题讨论】:
-
不使用结构化流的任何具体原因?另外,为什么不在驱动程序中预先加载配置,然后使用广播变量进行广播?每个批次的配置是否不断变化?
-
用例具有复杂的计算而不是常规的 ETL。当前配置在驱动程序级别加载并广播一次。但是需要在有新配置更新时动态更改它。注意:处理记录是不同的流输入,配置触发事件会监听不同的流。因此,对于配置输入流,即使给定批次中有 100 个事件,我也只想更新一次配置。 (希望每批更新一次的原因是可以理解的)。
标签: java apache-spark lazy-loading spark-streaming amazon-kinesis