2016-01-21 3 views
0

Есть ли рекомендованный/доказанный эффективный формат или механизм для сохранения DenseMatrix в Apache Spark? Или я должен просто записать его в файл?Сохранение DenseMatrix в Apache Spark

Я генерирую DenseMatrix сообщение о SVD-операции и должен ссылаться на него, когда и когда возникают запросы пользователя, и, следовательно, он будет часто просматриваться.

Любая помощь была бы высоко оценена.

ответ

1

Если по DenseMatrix вы имеете в виду org.apache.spark.mllib.linalg.DenseMatrix (V), это локальная структура данных, и для обработки объектов такого типа нет специального способа искры.

Один из способов справиться с этим, чтобы написать упорядоченный объект непосредственно в файл:

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)