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,只不过是连接流