我对Scala和Spark都非常新手,如果我做得完全错误,请原谅我。在读取csv文件、筛选和映射之后,我有一个RDD,它是一堆(String, Double)对。
(b2aff711,-0.00510)
(ae095138,0.20321)
(etc.)
当我在RDD上使用.groupByKey()时,
val grouped = rdd1.groupByKey()
需要得到一个包含一系列(String,[Double])对的RDD。(我不知道CompactBuffer是什么意思,可能会导致我的问题?)
(32540b03,CompactBuffer(-0.00699, 0.256023))
(a93dec11,CompactBuffer(0.00624))
(32cc6532,CompactBuffer(0.02337, -0.05223, -0.03591))
(etc.)
一旦它们被分组,我想要计算平均值和标准差。 我想简单地使用 .mean() 和 .sampleStdev() 方法。 当我尝试创建新的 RDD 时,
val mean = grouped.mean()
返回一个错误
错误:(51,22)值mean不是org.apache.spark.rdd.RDD [(String,Iterable [Double]]的成员
val mean = grouped.mean()
我已经导入了org.apache.spark.SparkContext._
我还尝试使用sampleStdev(),.sum(),.stats()得到相同的结果。无论问题是什么,都似乎影响所有数字RDD操作。