在 Apache Spark 中保留 DenseMatrix

Persisting a DenseMatrix in Apache Spark

是否有 recommended/proven 有效的格式或机制来在 Apache Spark 中保留 DenseMatrix?还是我应该把它写入文件?

我正在生成 DenseMatrix post SVD 操作,需要在用户查询进入时引用它,因此会经常查找它。

任何帮助将不胜感激。

如果 DenseMatrix 你的意思是 org.apache.spark.mllib.linalg.DenseMatrix (V) 它是一个本地数据结构,没有 Spark 特定的方法来处理这种类型的对象。

一种处理方法是将序列化对象直接写入文件:

val oos = new java.io.ObjectOutputStream(
  new java.io.FileInputStream("/tmp/foo")))

oos.writeObject(svd.V)
oos.close()

稍后使用 FileInputStreamObjectInputStream.readObject 阅读。您还可以使用您选择的人类可读序列化,例如 JSON:

import net.liftweb.json.{NoTypeHints, Serialization}
import net.liftweb.json.Serialization.{read, write}
implicit val formats = Serialization.formats(NoTypeHints)

val serialized: String = write(svd.V) 
// Write to file and read if needed
...
// Deserialize 
val deserialized = read[DenseMatrix](serialized)