是否有建议/证明是有效的格式或机制来在Apache Spark中持久化DenseMatrix?或者我应该把它写进一个文件?
我在SVD操作后生成DenseMatrix,需要在用户查询进入时引用它,因此会经常查找。
非常感谢任何帮助。
答案 0 :(得分:1)
如果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()
稍后使用FileInputStream
和ObjectInputStream.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)