flink 1.5有 broadcast() 以及 partitionCustom() 方法,允许将元素发送到所有分区或仅发送到一个分区。是否可以将元素发送到两个或多个分区,但不能发送到所有分区?api会支持它吗?
broadcast()
partitionCustom()
xwmevbvl1#
恐怕这种情况没有直接的支持。不过,您可以通过 flatMap 通过为单个输入元素发出多个结果来执行函数。例如
flatMap
stream.flatMap(new FlatMapFunction<Object, Tuple2<Object, Object>>() { @Override public void flatMap(Object value, Collector<Tuple2<Object, Object>> out) throws Exception { out.collect(Tuple2.of(/*key1*/, value)); out.collect(Tuple2.of(/*key2*/, value)); out.collect(Tuple2.of(/*key3*/, value)); } }).partitionCustom(new Partitioner<Object>() { @Override public int partition(Object key, int numPartitions) { return /* desired partition */ } }, 0);
1条答案
按热度按时间xwmevbvl1#
恐怕这种情况没有直接的支持。不过,您可以通过
flatMap
通过为单个输入元素发出多个结果来执行函数。例如