2015-08-31 35 views
1

我正在嘗試使用Scalding對groupBy語句的輸出進行排序。在Scalding中對groupBy的輸出進行排序

我的數據集看起來像這樣

Src   Eqid  Version Datetime         Lat  Lon  Magnitude Depth NST Region 
ci   15214001 0  Tuesday, September 11, 2012 12:31:37 UTC 33.0110 -115.5330 1.3  2.20 18 Southern California 
ci   15213993 0  Tuesday, September 11, 2012 12:23:34 UTC 35.3713 -118.5395 2.6  2.40 55 Central California 

這是我一直在努力

.sourceFromArg(args, "input").read 
.groupBy('Region) { _.average('Magnitude -> 'avgMag) } 
.project('Region, 'avgMag) 
.write(sourceFromArg(args, "output")) 

我知道我可以在GROUPBY內做

.sortBy(field) 

,但我不能根據我想要的領域進行排序(即avgMag)。

關於如何基於平均幅度進行排序的任何想法?

回答

1

這種方法的工作原理,但需要第二GROUPBY

.groupBy('Region) { _.average('Magnitude -> 'avgMag) } 
    .insert('dummy, 1) 
    .groupBy('dummy) { _.sortBy('avgMag).reverse } 
    .project('Region, 'avgMag) 
    .write(sourceFromArg(args, "output")) 
相關問題