Я знаю, что Flink поставляется с пользовательскими API разбиения. Однако проблема в том, что после вызова partitionCustom
на DataStream
вы получаете обратно DataStream
, а не KeyedStream
.
С другой стороны, вы не можете переопределить стратегию разделения для KeyedStream
.
Я действительно хочу использовать KeyedStream
, потому что API для DataStream
не имеет операторов reduce
и sum
и из-за автоматического разделения внутреннего состояния.
Я имею в виду, если количество слов:
words.map(s -> Tuple2.of(s, 1)).keyBy(0).sum(1)
Хотел бы я написать:
words.map(s -> Tuple2.of(s, 1)).partitionCustom(myPartitioner, 0).sum(1)
Есть ли способ добиться этого?
Спасибо!