Flink - 如何同时计算总和和平均值?

时间:2017-05-17 12:50:17

标签: apache-flink flink-streaming

Flink(批处理/流媒体)中是否有办法同时计算字段的平均值和总和?使用聚合方法,我可以计算groupBy结果上字段的总和,但是如何同时计算平均值呢?下面的示例代码。

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<Tuple3<String,Integer,Double>> source = 
         env.readCsvFile(PathConfig.LINEITEM_1)
         .fieldDelimiter("|")
         types(String.class, Integer.class, Double.class);

source.groupBy(0,1).aggregate(Aggregations.SUM, 2);
//average of field 2???

1 个答案:

答案 0 :(得分:2)

对于CSV解析,分组和汇总等简单任务,我建议使用Flink的Table API

如果您更愿意使用更多低级API,则可以实现一个GroupReduce函数,该函数可以求和/计数(直到迭代器没有更多元素)并在最后产生最终平均值。