Functional programming 弗林克:为什么Reduce、Fold和Aggregations的来源是KeyedStream而不是DataStream?

Functional programming 弗林克:为什么Reduce、Fold和Aggregations的来源是KeyedStream而不是DataStream?,functional-programming,apache-flink,reduce,fold,flink-streaming,Functional Programming,Apache Flink,Reduce,Fold,Flink Streaming,根据Apache Flink的文档: 所有Reduce、Fold和Aggregations都表示从KeyedStream到DataStream的转换,而不是从DataStream到DataStream的转换 我想知道为什么 据我所知,您仍然可以在非键数据流上进行reduce、fold或min/max聚合,如map或filter。通常,我们希望基于某些键进行聚合。例如,假设流的输入是Tuple2groupId:String,userId:String。通过使用groupId作为键的KeyedStr

根据Apache Flink的文档:

所有Reduce、Fold和Aggregations都表示从KeyedStream到DataStream的转换,而不是从DataStream到DataStream的转换

我想知道为什么


据我所知,您仍然可以在非键数据流上进行reduce、fold或min/max聚合,如map或filter。

通常,我们希望基于某些键进行聚合。例如,假设流的输入是Tuple2groupId:String,userId:String。通过使用groupId作为键的KeyedStream,API提供了方便的方法来计算每个组的用户数

当然,如果我们只想获得所有输入数据的全局min userId,我们可以简单地使用DataStream上的map来实现这一点