我面临一个问题,当keyedstream的数量接近并行时,它在worker上是纯并行的
我的输入记录的范围是0-n。当我使用keyby时,有些工作人员处理零个键,有些工作人员处理多个键。这是因为 KeyGroupRangeAssignment.assignKeyToParallelOperator()
在 KeyGroupStreamPartitioner
对key.hascode使用hash并选择频道
我知道partitioncustom可以处理这种情况,但是partitioncustom只返回datastream,而不是keystream
那么,如果没有黑客,我能对handler做些什么呢
2条答案
按热度按时间bnlyeluc1#
嗯,这有点像黑客,但请参阅makekeyforoperatorindex。我已经习惯了
RichMapFunction
找出它所在的子任务索引open()
呼叫,然后使用makeKeyForOperatorIndex
创建一个键(整数或字符串),该键作为字段添加,然后用于keyBy()
.kmynzznz2#
不幸的是它有点埋了,但有一种方法可以改变它
DataStream
变成一个KeyedStream
.