Боюсь, что нет прямой поддержки для такого сценария.Однако вы можете легко реализовать это с помощью функции 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);