创建映射的 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))
})
我运行了一个 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))
})