【发布时间】:2017-09-08 08:14:41
【问题描述】:
我运行了一个 K-means 示例,并且我有一个 RDD,其中包含名为 parsedData 的数据 我的模型命名为集群。我想用模型中的数据点和预测集群创建一个映射的 Rdd。所以我尝试了
val predictions = parsedData.map( point =>
{
val pointPred = clusters.predict(point)
Array(point,pointPred)
})
当我尝试时
predictions.first()
我接受
Array[Any] = Array([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)
并再次将对象作为结果。 如何获取数据而不是对象并将它们保存到本地文件?
【问题讨论】:
-
使用
predictions.saveAsTextFile。 -
另外,你需要
mkString那些数组 -
所以我编辑了我的代码我做了我们 saveAsTextFile 并采取了 Ljava.lang.Object;@3b43c55c ....
-
那么,不要使用数组。使用元组
-
在我的地图中?像 .map(point =>(point, cluster.predict(point)))
标签: scala file apache-spark distributed-computing apache-spark-mllib