【问题标题】:Convert Array[DenseVector] to CSV with Scala使用 Scala 将 Array[DenseVector] 转换为 CSV
【发布时间】:2018-06-13 16:37:07
【问题描述】:

我在 Scala 中使用 Kmeans Spark 函数,我需要将获得的集群中心保存到 CSV 中。这个 val 的类型是:Array[DenseVector]

val clusters = KMeans.train(parsedData, numClusters, numIterations)
val centers = clusters.clusterCenters

我试图将centers 转换为 RDD 文件,然后从 RDD 转换为 DF,但我遇到了很多问题(例如 import spark.implicits._ / SQLContext.implicits._ 不起作用,我无法使用.toDF)。我想知道是否有另一种方法可以使 CSV 更容易。

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    无需使用外部库,您只需以 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多