如何在Scalding中一次平均几列?

时间:2013-03-26 17:38:15

标签: hadoop cascading scalding

作为使用Scalding进行某些计算的最后一步,我想计算管道中几列的平均值。但是以下代码不起作用

myPipe.groupAll { _average('col1,'col2, 'col3) }

有没有办法计算这些函数sum, max, average而不进行多次传递?我担心性能,但Scalding可能足够聪明,可以通过编程方式检测到它。

2 个答案:

答案 0 :(得分:3)

cascading-user论坛回答了这个问题。在此留下答案作为参考

myPipe.groupAll { _.average('col1).average('col2).average('col3) }

答案 1 :(得分:1)

你可以使用下面的功能一次性完成大小(aka计数),平均值和standardDev。

// Find the count of boys vs. girls, their mean age and standard deviation. 
// The new pipe contains "sex", "count", "meanAge" and "stdevAge" fields.
val demographics = people.groupBy('sex) { _.sizeAveStdev('age -> ('count, 'meanAge, 'stdevAge) ) }
找到最大值需要另外通过。