我有这个数据管道:stream.map(…).keyby().addsink(…)如果我有这个,当它到达sink时,我是否保证每个键都由sink操作中的单个任务管理器操作?我在网上看到过很多这样的例子,他们先做keyby,然后做一些window然后reduce,但从来没有做过keyby的分区,然后在Flume上钉钉子。
pkbketx91#
flink不保证“由单个任务管理器操作”。一个任务管理器可以有1…n个插槽,而您的flink集群有1…n个任务管理器,您无法控制操作员子任务将使用哪个插槽。我想你要问的是每一张唱片是否会被写一次——如果是的话,那么是的。侧重点-你不需要 keyBy() 将记录分发给并行接收器操作符。如果 map() 与接收器相同,则数据将在这两者之间进行管道传输(无网络重新分配)。如果并行性不同,那么网络上将发生随机分区。
keyBy()
map()
1条答案
按热度按时间pkbketx91#
flink不保证“由单个任务管理器操作”。一个任务管理器可以有1…n个插槽,而您的flink集群有1…n个任务管理器,您无法控制操作员子任务将使用哪个插槽。
我想你要问的是每一张唱片是否会被写一次——如果是的话,那么是的。
侧重点-你不需要
keyBy()
将记录分发给并行接收器操作符。如果map()
与接收器相同,则数据将在这两者之间进行管道传输(无网络重新分配)。如果并行性不同,那么网络上将发生随机分区。