Flink 中运算符初始化的顺序
Order of operators initialization in Flink
我有一个Flink job,经典造型datasource-operator1-operatorN-sink
。
据我观察,operator1
的 open()
方法在 datasource
的 open()
方法之前被调用。
在 operator1
的 open()
方法中,我需要处理一些业务逻辑,它依赖于在 datasource.open()
得到解析的东西
1- 有什么方法可以限制在 datasource.open()
之前不调用 operator1.open()
吗?
2- 有什么方法可以从 datasource.open()
方法 communicate/signal 到 operator1.open()
方法吗?
试图在运营商之间建立某种带外通信常常会给人们带来麻烦。最好的情况是它会搞砸性能,最坏的情况是会导致死锁。
您可能会尝试依赖数据源和异步函数之间已经存在的信号通路——换句话说,从数据源发出一个特殊编码的事件,告诉异步函数它可以现在开始,让异步函数在进行其他处理之前等待该特殊记录。
我有一个Flink job,经典造型datasource-operator1-operatorN-sink
。
据我观察,operator1
的 open()
方法在 datasource
的 open()
方法之前被调用。
在 operator1
的 open()
方法中,我需要处理一些业务逻辑,它依赖于在 datasource.open()
1- 有什么方法可以限制在 datasource.open()
之前不调用 operator1.open()
吗?
2- 有什么方法可以从 datasource.open()
方法 communicate/signal 到 operator1.open()
方法吗?
试图在运营商之间建立某种带外通信常常会给人们带来麻烦。最好的情况是它会搞砸性能,最坏的情况是会导致死锁。
您可能会尝试依赖数据源和异步函数之间已经存在的信号通路——换句话说,从数据源发出一个特殊编码的事件,告诉异步函数它可以现在开始,让异步函数在进行其他处理之前等待该特殊记录。