我们通常在写Flink程序的时候都会遇到keyBy,比如按照某条数据的某个字段进行分类计算,或者计算pv,还有需要用到Flink定时器的高级功能。
下面我们根据keyby的源码,看下keyBy的用法(本博客基于Flink1.13)
源码有5种方式定义keyBy, 但是其中的2种已经不用了,如果用户想灵活定义Flink分组计算的key,建议用第一种自定义KeySelector的方式

我们先来看下第一种keyBy的源码,需要自定义KeySelector
 
 public <K> KeyedStream<T, K> keyBy(KeySelector<T, K> key) {
    Preconditions.checkNotNull(key);
    return new KeyedStream<>(this, clean(key));
} 
 
然后我们再看下KeySelector的源码,是个接口,只有一个实现的方法,接口上有泛型,代表IN代表输入的数据的类型,KEY代表最后返回的key的类型
@Public @FunctionalInterface public interface KeySelector<IN, KEY> extends Function, Serializable { KEY getKey(IN va














![[附源码]Python计算机毕业设计Django-中国传统手工艺销售平台](https://img-blog.csdnimg.cn/8ef98439179a44118e1285446de01e50.png)




