将Spark org.apache.spark.mllib.linalg.Matrix保存到文件

flo*_*ins 4 apache-spark apache-spark-mllib

Spark MLLib中的相关结果是org.apache.spark.mllib.linalg.Matrix类型的。(请参阅http://spark.apache.org/docs/1.2.1/mllib-statistics.html#correlations

val data: RDD[Vector] = ... 

val correlMatrix: Matrix = Statistics.corr(data, "pearson")
Run Code Online (Sandbox Code Playgroud)

我想将结果保存到文件中。我怎样才能做到这一点?

Dyl*_*ogg 5

这是将矩阵保存到hdfs并指定分隔符的简单有效的方法。

(因为.toArray是列主格式,所以使用了转置。)

val localMatrix: List[Array[Double]] = correlMatrix
    .transpose  // Transpose since .toArray is column major
    .toArray
    .grouped(correlMatrix.numCols)
    .toList

val lines: List[String] = localMatrix
    .map(line => line.mkString(" "))

sc.parallelize(lines)
    .repartition(1)
    .saveAsTextFile("hdfs:///home/user/spark/correlMatrix.txt")
Run Code Online (Sandbox Code Playgroud)


Car*_*hez 0

由于Matrix是可序列化的,因此您可以使用普通的 Scala 来编写它。

您可以在此处找到示例。