Flink KeyBy 字段

Flink KeyBy fields

我正在尝试对给定字段使用 keyby 函数,但是,IntelliJ 告诉我这个选项已被弃用。

// map each job event to a 2-tuple
DataStream<Tuple2<Long, Long>> mappedEvents =  events.map(new AppendOneMapper()).slotSharingGroup("2");

// group the stream of tuples by jobId
KeyedStream<Tuple2<Long, Long>, Tuple> keyedEvents = mappedEvents.keyBy(0);

我将如何使用新方法正确执行此操作?

带整数或字符串的 KeyBy 已弃用。 来自文档:“已弃用。使用 keyBy(KeySelector)”。

org.apache.flink.api.java.functions
Interface KeySelector<IN,KEY>
Type Parameters:
IN - Type of objects to extract the key from.
KEY - Type of key.

KeySelector是一个函数式接口,所以你可以直接插入lambda表达式。

替换

.keyBy(key)

.keyBy(event -> event.getKey())