【问题标题】:Persisting a DenseMatrix in Apache Spark在 Apache Spark 中持久化 DenseMatrix
【发布时间】:2016-04-25 18:22:07
【问题描述】:

是否有推荐/证明是在 Apache Spark 中持久化 DenseMatrix 的有效格式或机制?还是我应该把它写到一个文件中?

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

任何帮助将不胜感激。

【问题讨论】:

    标签: apache-spark apache-spark-mllib


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多