在 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()
稍后使用 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)
是否有 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()
稍后使用 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)