我在编译scala程序时遇到了一个问题。这是我的代码。
这是给出问题的代码部分。
val Average_Age =
value2
.groupBy(_._2._1)
.mapValues(Sum_Age=>mean1(Sum_Age.map(_._2._2)))
.toArray
Spark在RDD上主要有两种操作:
-
转换:输入为RDD,输出为RDD
-
Actions:接受输入RDD并返回一个Scala Collection。
您在这里做错的是您试图将RDD
直接转换为Array
。这是不可能的,因此你需要先应用Action以获得scala Collection形式的输出。
因此,您可以通过添加一个操作来使它工作:
val Average_Age =
value2
.groupBy(_._2._1)
.mapValues(Sum_Age=>mean1(Sum_Age.map(_._2._2))).collect
.toArray
注::代码没有经过测试!
我不确定您对Spark和使用rdd(弹性分布式数据集)有多熟悉,但如果您不熟悉,一些阅读将非常有帮助。
您的问题是RDD
不再支持直接调用toArray()
;你应该使用.collect()
。