使用Scala将Array [DenseVector]转换为CSV

时间:2018-01-04 00:08:29

标签: scala csv cluster-computing k-means apache-spark-mllib

我正在使用Scala的Kmeans Spark功能,我需要将获得的群集中心保存为CSV。此val的类型为:function addMaterial () { var course = Classroom.Courses.get("10404033071"); course.courseMaterialSets = [{ title: "test", materials: [{ link:{ url: "URL", },}], }], Classroom.Courses.update(course, "10404033071"); }

Array[DenseVector]

我正在尝试将val clusters = KMeans.train(parsedData, numClusters, numIterations) val centers = clusters.clusterCenters 转换为RDD文件,然后从RDD转换为DF,但是我遇到了很多问题(例如,导入spark.implicits._ / SQLContext.implicits._无效,我不能使用centers)。我想知道是否有其他方法可以让CSV更容易。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

不使用外部库,只需简单地写入Java文件即可。

import java.io.{ PrintWriter, File, FileOutputStream }

...

val pw = new PrintWriter(
    new File( "KMeans_centers.csv" )
)

centers
.foreach( vec =>
        pw.write( vec.toString.drop( 1 ).dropRight( 1 ) + "\n" )
    )

pw.close()

产生的文件

0.1,0.1,0.1
9.1,9.1,9.1
需要

dropdropRight来移除转化后的矢量周围的[]

代码和数据来自官方example