如何在spark中有序地将indexedrowmatrix保存到本地文件?

时间:2017-11-02 06:42:23

标签: apache-spark

我有一个块矩阵,想要将它保存在我的本地磁盘上的单个文件中。

val filepath = "hdfs://*********************"

object RowOrdering extends Ordering[IndexedRow] {
    def compare(a:IndexedRow, b:IndexedRow) = a.index compare b.index
}

blockmatrix.toIndexedRowMatrix.rows.map(x => x.vector.toDense).coalesce(1, true)(RowOrdering).saveAsTextFile(filepath)

但是在我重新加载文件后

sc.textFile(path).take(1)(0)    

它不返回矩阵的第一行。那么,如果仍然保留订单,我怎么能保存这样的矩阵呢?非常感谢!

1 个答案:

答案 0 :(得分:0)

我已经明白了。只需使用命令

blockmatrix.toIndexedRowMatrix.rows.sortBy(x => x.index).map(x => x.vector.toDense).saveAsTextFile(filepath)