我对 Scala 和 Spark 非常陌生,并且正在使用棒球统计数据进行一些自制练习。我正在使用案例类创建 RDD 并为数据分配模式,然后将其转换为 DataFrame,以便我可以使用 SparkSQL 通过符合特定条件的统计数据来选择玩家组。
一旦我有了我有兴趣进一步研究的玩家子集,我想找到一个列的平均值;例如击球平均数或 RBI。从那里我想根据他们与所有玩家相比的平均表现将所有玩家分成百分位数组;前 10%、后 10%、40-50%
我已经能够使用 DataFrame.describe() 函数将所需列(平均值、标准差、计数、最小值和最大值)的摘要全部作为字符串返回。有没有更好的方法来获得双打的平均值和标准差,以及将玩家分成 10 个百分位数的组的最佳方法是什么?
到目前为止,我的想法是找到结束百分位范围的值,并编写一个通过比较器对玩家进行分组的函数,但这感觉就像是在重新发明轮子。
我目前有以下进口:
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
import org.joda.time.format.DateTimeFormat