创建映射的RDD并将其保存在文本中

时间:2017-09-08 08:14:42

标签: scala file apache-spark distributed-computing apache-spark-mllib

我运行了一个K-means示例,我有一个RDD,我的数据名为parsedData 我的模型命名为群集。我想从模型中创建一个带有datapoint和预测集群的映射Rdd。所以我试过

val predictions = parsedData.map( point => 
{
val pointPred = clusters.predict(point) 
Array(point,pointPred)
})

当我尝试

 predictions.first()

我拿

  

数组[任意] =数组([0.8898668778942382,0.89533945283595],0)

这是我想要的结果。所以我试过

predictions.saveAsTextFile ("/../ClusterResults");

从本地文件中的每个数据点保存数组,但创建的文件是

  

[Ljava.lang.Object; @ 3b43c55c

     

[Ljava.lang.Object; @ 5e523969

     

[Ljava.lang.Object; @ 68374cdf ....

有对象而不是数据。我也尝试从RDD打印

predictions.take(10).map(println)

再次将对象作为结果。 如何获取数据而不是对象并将其保存到本地文件?

1 个答案:

答案 0 :(得分:1)

问题在于您映射数据的方式。尝试使用元组,而不是数组

示例:

val predictions = parsedData.map( point => {
  (point, clusters.predict(point))
})