【发布时间】:2015-10-12 10:11:44
【问题描述】:
我对 Scala 和 Spark 非常陌生,并且正在使用棒球统计数据进行一些自制练习。我正在使用案例类创建 RDD 并为数据分配架构,然后将其转换为 DataFrame,以便我可以使用 SparkSQL 通过符合特定条件的统计数据来选择玩家组。
一旦我有了有兴趣进一步研究的玩家子集,我想找到一个列的平均值;例如击球平均数或 RBI。从那里我想根据他们与所有玩家相比的平均表现将所有玩家分成百分位数;前 10%,后 10%,40-50%
我已经能够使用 DataFrame.describe() 函数将所需列的摘要(平均值、标准差、计数、最小值和最大值)全部作为字符串返回。有没有更好的方法来获得双打的平均值和标准差,以及将玩家分成 10 个百分位数的组的最佳方法是什么?
到目前为止,我的想法是找到结束百分位数范围的值,并编写一个通过比较器对玩家进行分组的函数,但这感觉就像是在重新发明轮子。
【问题讨论】:
-
看起来数据框内置了一些百分位的东西:stackoverflow.com/a/30900466/21755 有什么用吗?
-
我之前尝试过,但出现以下错误:
Exception in thread "main" java.util.NoSuchElementException: key not found: PERCENTILE -
Spark 版本问题?你用的是什么版本?
-
我使用的是 1.4.0 版本
标签: scala apache-spark bigdata apache-spark-sql