Flink:为什么Reduce,Fold,Aggregations的源代码是KeyedStream而不是DataStream?

时间:2017-10-30 11:01:35

标签: functional-programming apache-flink reduce fold flink-streaming

根据Apache Flink的文档:DataStream Transformations

所有Reduce,Fold,Aggregations都代表DataStream转换为DataStream 而非DataStream转换为reduce

我想知道为什么?

据我了解,您仍然可以在(非键控)DataStream上执行foldminmax / map(聚合),例如{ {1}}或filter

1 个答案:

答案 0 :(得分:1)

通常,我们希望根据某些keys进行一些聚合。例如,假设流的输入是Tuple2(groupId:String,userId:String)。通过使用groupId作为键的KeyedStream,API提供了计算每个组的用户数的便捷方式。

当然,如果我们只想获取所有输入数据的全局最小userId,我们可以简单地使用DataStream上的map来实现它。