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



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???

对于像CSV解析、分组和聚合这样的简单任务,我建议使用Flink的Table API。

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

相关内容

  • 没有找到相关文章