值toArray不是org.apache.spark.rdd.RDD [(String,Int)]的成员

时间:2016-10-22 18:56:20

标签: scala apache-spark mapreduce

当我厌倦编译我的scala程序时,我遇到了问题。这是我的代码。

这是代码发出问题的部分。

val Average_Age = 
 value2
  .groupBy(_._2._1)
  .mapValues(Sum_Age=>mean1(Sum_Age.map(_._2._2)))
  .toArray

2 个答案:

答案 0 :(得分:2)

我不确定你对Spark和使用RDD(弹性分布式数据集)有多熟悉,但如果你不熟悉,some reading会非常有帮助。

问题在于RDD不再支持直接调用toArray();你应该使用.collect()代替。

答案 1 :(得分:2)

Spark主要有两种类型的RDD操作:

  1. 转换:将输入作为RDD输出并输出为RDD

  2. 操作:输入RDD并返回Scala集合。

  3. 您在这里做错了是因为您试图直接将RDD转换为Array。这是不可能的,因此您需要首先应用Action来获取scala Collection形式的输出。

    因此,您可以通过添加操作来完成此工作:

    val Average_Age = 
     value2
      .groupBy(_._2._1)
      .mapValues(Sum_Age=>mean1(Sum_Age.map(_._2._2))).collect
      .toArray
    

    P.S。:代码未经过测试!