我有一个参数 params
要在flink流媒体中序列化,
class P extend Serializable {...}
val params = new P(...)
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.addSource(new MySource(params))
.map(new MyMap(params))
.addSink(new MySink(params))
env.setParallelism(1)
env.execute("My Job")
但是参数会在驱动节点中改变,我需要更新 params
在作业运行期间发送给执行器。基于flink流媒体工作的不停止,这是可能的吗?
1条答案
按热度按时间wlwcrazw1#
简言之,答案是否定的,因为每次出现新记录时,您的自定义项都需要对参数进行[反]序列化,这将减慢执行速度。
但是,您可以通过扩展abstractudfstreamoperator实现自己的流操作符,并在转换操作中调用它。我在这里举了一个例子:“在flink中实现我自己的流操作符来处理数据倾斜”。
然后决定何时读取新参数的运算符。例如,只需创建一个新线程,并将其调度为每10分钟一次。参数文件必须放置在操作员将要运行的所有节点上。