flink流媒体中参数的动态序列化

mxg2im7a  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(265)

我有一个参数 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流媒体工作的不停止,这是可能的吗?

wlwcrazw

wlwcrazw1#

简言之,答案是否定的,因为每次出现新记录时,您的自定义项都需要对参数进行[反]序列化,这将减慢执行速度。
但是,您可以通过扩展abstractudfstreamoperator实现自己的流操作符,并在转换操作中调用它。我在这里举了一个例子:“在flink中实现我自己的流操作符来处理数据倾斜”。
然后决定何时读取新参数的运算符。例如,只需创建一个新线程,并将其调度为每10分钟一次。参数文件必须放置在操作员将要运行的所有节点上。

相关问题