我运行了一个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)
再次将对象作为结果。 如何获取数据而不是对象并将其保存到本地文件?
答案 0 :(得分:1)
问题在于您映射数据的方式。尝试使用元组,而不是数组。
示例:
val predictions = parsedData.map( point => {
(point, clusters.predict(point))
})