Map 算子

DataStream → DataStream,获取一个元素并产生一个元素。输入流中的值乘以2的映射函数:

DataStream<Integer> dataStream = //...
dataStream.map(new MapFunction<Integer, Integer>() {
    @Override
    public Integer map(Integer value) throws Exception {
        return 2 * value;
    }
});

FlatMap 算子

DataStream → DataStream,获取一个元素,产生0个、1个或多个元素。切分句子的FlatMap函数:

dataStream.flatMap(new FlatMapFunction<String, String>() {
    @Override
    public void flatMap(String value, Collector<String> out) throws Exception {
        for(String word: value.split(" ")){
            out.collect(word);
        }
    }
});

Filter 算子

DataStream → DataStream,返回布尔值,满足条件则筛选出来。过滤掉值为0的元素:

dataStream.filter(new FilterFunction<Integer>() {
    @Override
    public boolean filter(Integer value) throws Exception {
        return value != 0;
    }
});

KeyBy 算子

DataStream → KeyedStream,将流逻辑上划分为不相交的分区,所有具有相同键的记录被分配到相同的分区:

dataStream.keyBy(value -> value.getSomeKey())
dataStream.keyBy(value -> value.f0)

Reduce 算子

KeyedStream → DataStream,“滚动”归约是一种累积过程,逐个处理流中的元素并将结果逐步更新。例如,输入数据流 [1, 2, 3, 4, 5],部分和的输出将是 [1, 3, 6, 10, 15]:

keyedStream.reduce(new ReduceFunction<Integer>() {
    @Override
    public Integer reduce(Integer value1, Integer value2) throws Exception {
        return value1 + value2;
    }
});

Fold 算子

KeyedStream → DataStream,对于带有初始值的键控数据流进行滚动折叠,将当前元素与上一个折叠值相互结合并发出新值:

DataStream<String> result =
    keyedStream.fold("start", new FoldFunction<Integer, String>() {
        @Override
        public String fold(String current, Integer value) {
            return current + "-" + value;
        }
});

Aggregations 算子

KeyedStream → DataStream,对KeyedStream进行滚动聚合,min和minBy的区别在于min返回最小值,而minBy返回该字段中具有最小元素值:

keyedStream.sum(0);
keyedStream.sum("key");
keyedStream.min(0);
keyedStream.min("key");
keyedStream.max(0);
keyedStream.max("key");
keyedStream.minBy(0);
keyedStream.minBy("key");
keyedStream.maxBy(0);
keyedStream.maxBy("key");

Window 算子

KeyedStream → WindowedStream,在已经分区的KeyedStream上定义窗口,窗口根据某些特性对每个键中的数据进行分组:

dataStream.keyBy(value -> value.f0).window(TumblingEventTimeWindows.of(Time.seconds(5)));

WindowAll 算子

DataStream → AllWindowedStream,在常规的DataStream上定义窗口,对所有流事件进行分组:

dataStream.windowAll(TumblingEventTimeWindows.of(Time.seconds(5)));

Window Apply 算子

WindowedStream → DataStream,对整个窗口应用一个通用函数

Window Reduce 算子

WindowedStream → DataStream,对于一个功能性Reduce函数应用于窗口,并返回简化的值

Window Fold 算子

WindowedStream → DataStream,应用一个函数式的折叠函数到窗口,并返回折叠后的值

Aggregations on windows

WindowedStream → DataStream,聚合窗口中的内容

Union 算子

DataStream → DataStream,将两个或者多个数据流合并,创建一个包含所有数据流中所有元素的新数据流

Window Join 算子

DataStream, DataStream → DataStream,将两个数据流按给定的键和一个公共窗口进行连接

Interval Join 算子

KeyedStream, KeyedStream → DataStream,将两个具有相同键的键控流中的元素在给定时间间隔内连接起来

Window CoGroup 算子

DataStream, DataStream → DataStream,将两个数据流在给定键和公共窗口上进行合并

Connect 算子

DataStream, DataStream → ConnectedStreams,将两个数据流连接起来,保留他们的类型

CoMap, CoFlatMap 算子

ConnectedStreams → DataStream,类似Map和FlatMap,只不过是连接流