Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flink 密钥流的非平衡处理_Apache Flink - Fatal编程技术网

Apache flink 密钥流的非平衡处理

Apache flink 密钥流的非平衡处理,apache-flink,Apache Flink,我面临一个问题,KeyedStream在工人身上完全是并行的 对于键数接近并行的情况 我的输入记录的范围为0-N。当我使用keyBy时,一些工人处理零键,一些工人处理多个键。这是因为KeyGroupStreamPartitioner中的KeyGroupRangeSignment.assignKeyToParallelOperator对key.hasCode使用杂音哈希并选择通道 我知道partitionCustom可以处理这种情况,但是partitionCustom只返回DataStream,而

我面临一个问题,KeyedStream在工人身上完全是并行的 对于键数接近并行的情况

我的输入记录的范围为0-N。当我使用keyBy时,一些工人处理零键,一些工人处理多个键。这是因为KeyGroupStreamPartitioner中的KeyGroupRangeSignment.assignKeyToParallelOperator对key.hasCode使用杂音哈希并选择通道

我知道partitionCustom可以处理这种情况,但是partitionCustom只返回DataStream,而不是KeyStream


那么,如果没有hack-ish,我能对handler做些什么呢?

嗯,这有点像hack-ish,但是请看。我使用了一个定制的RichMap函数,该函数计算出它在其打开调用中是哪个子任务索引,然后使用makeKeyForOperatorIndex创建一个键整数或字符串,作为字段添加,然后用于keyBy。

不幸的是,它有点隐蔽,但有一种方法可以将数据流转换为KeyedStream


感谢您的支持,对于makeKeyForOperatorIndex,我也有同样的问题。1。对于参数operatorIndex,是0-N(平行度)?2。如果找不到目标运算符索引,会发生什么情况?3。我使用0-3,并行度是3。控制台输出3>9,13>0,21>4,0。我认为结果应该是1>9,12>0,20>4,0。我的方法有没有做错
DataStream<T> partitioned = input.partitionCustom(...);
KeyedStream<T> keyed = DataStreamUtils.reinterpretAsKeyedStream(partitioned, ...)