我在试闪克1.12.0,
我注意到flink会自动在使用不同并行性的操作符之间添加relabance
。下面是一个例子,source操作符的事件会以循环方式发送到下游的map/sink操作符:env.addSource(...).setParallesim(1).map(...).addSink(..).setParallesim(3)
我会问flink源代码在哪里添加了这个技巧,我查看了代码,但没有找到。
谢谢。
我在试闪克1.12.0,
我注意到flink会自动在使用不同并行性的操作符之间添加relabance
。下面是一个例子,source操作符的事件会以循环方式发送到下游的map/sink操作符:env.addSource(...).setParallesim(1).map(...).addSink(..).setParallesim(3)
我会问flink源代码在哪里添加了这个技巧,我查看了代码,但没有找到。
谢谢。
1条答案
按热度按时间piv4azn71#
有多种方法可以在管道中进行重新平衡或重新缩放,以处理两个运算符之间不一致的并行性。您可以看到
DataStream<T>
基类本身定义了这种方法:这两个函数分别使用
RebalancePartitioner
和RescalePartitioner
,但是,如果再深入研究一下,就会发现StreamGraph
中引用了RebalancePartitioner
,StreamGraph
负责构造Flink在createActualEdge()
调用中执行的DAG:这将处理对图中节点(操作符)的评估,并检查它们各自的并行级别,必要时进行重新平衡。