2016-01-21 61 views
0

是否存在推薦/被證明是有效的格式或機制來在Apache Spark中保留DenseMatrix?或者我應該把它寫入一個文件?在Apache Spark中堅持使用DenseMatrix

我正在生成一個DenseMatrix發佈SVD操作,並且需要在用戶查詢進來時引用它,因此經常會查找它。

任何幫助將不勝感激。

回答

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() 

,然後再使用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)