我有一个RDD,我目前正在使用combineByKey分组并计算基本的描述性统计数据(count,sum,std,mean等)。它工作正常,但看起来像RDD.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)
如何将combineByKey替换为开箱即用的.stats()函数,并为每个组获取基本统计信息?
答案 0 :(得分:0)
Double RDDs上的统计数据功能未按群组定义。我建议使用Spark SQL的DataFrames
,因为它们具有在分组数据上定义的汇总统计数据聚合函数。
另一种选择是使用类似于使用stats()
类定义StatsCounter
的方式来执行您自己的缩减逻辑。