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

Create a mapped RDD and save it in text

我运行了一个 K 均值示例,我有一个 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)

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

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

示例:

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