2015-05-26 41 views
0

我有一個RDD,我目前正在使用combineByKey對基本描述性統計信息(count,sum,std,mean等)進行分組和計算。它工作正常,但似乎RDD.stats()函數將做我所需要的。在分組的RDD(Spark)上調用.stats()

現在,我做了以下內容:

text_file = sc.textFile(input_source_file) 
text_file.flatMap(zonal.zonal_stats)\ 
     .combineByKey(first_combiner, new_merge, final_combine)\ 
     .map(lambda (label, (value_sum, count, mx, mn)): "{},{},{},{},{},{},{}".format(label, value_sum, count, value_sum/count, mx, mn, mx - mn))\ 
     .saveAsTextFile(output_path) 

我怎樣才能與外的現成的.stats()函數取代combineByKey和獲得基本的統計數據發回每個組?

+0

你能分享更多的代碼嗎?你的first_combiner,new_merge,final_combine是什麼? – artemdevel

回答

0

雙RDD上的統計函數沒有在每個組的基礎上定義。我建議看看使用Spark SQL的DataFrames,因爲它們具有在分組數據上定義的彙總統計信息聚合函數。

另一種辦法是做類似stats()如何使用StatsCounter類定義了自己的邏輯減少。