如何在键控流上使用两个聚合函数?

时间:2019-06-06 14:37:57

标签: apache-flink flink-streaming

我正在尝试找到一个受欢迎的目的地,使用DataStream API可以吸引更多的人。

我的数据将采用以下格式

输入格式:

出租车ID,出租车号码牌,出租车类型,出租车司机姓名,当前行程/否,上车地点,目的地,乘客人数

我试图使用keyBy()运算符解决上述问题,并将其与sum()和max()运算符链接在一起。但是,我注意到在键控流中只能使用一个聚合函数。当我尝试两种聚合函数时,编译器都将显示错误消息。

当我使用使用groupBy()函数的DataSet API尝试上述问题时,我能够同时使用sum()和MaxBy()。

DataStream API代码

SingleOutputStreamOperator<Tuple8<String, String, String, String, Boolean, String, String, Integer>> stream=
                 environment.readTextFile("path")
                .map(new MapRideData())
                .filter(new FilterObject())
                .keyBy(6)
                .sum(7)
                .max(7);

DataSet API-以下代码没有问题

DataSet<Tuple8<String, String, String, String, Boolean, String, String, Integer>> destination =
                data.groupBy(6)
                        .sum(7)
                        .maxBy(7);

0 个答案:

没有答案