0
私は、Python側で疎なデータを表現/構築し、そのデータをストレージに出力してからspark/scalaアプリケーションにロードする必要があるアプリケーションに取り組んでいます。クロスランゲージ(pythonとscala)の疎のデータ/ deser?
シリアライズ/デシリアライズに使用するフォーマット/ライブラリについてのご意見はありますか?
私は、Python側で疎なデータを表現/構築し、そのデータをストレージに出力してからspark/scalaアプリケーションにロードする必要があるアプリケーションに取り組んでいます。クロスランゲージ(pythonとscala)の疎のデータ/ deser?
シリアライズ/デシリアライズに使用するフォーマット/ライブラリについてのご意見はありますか?
まあ、mllib.Vectors
はすでに意味のある文字列表現とfromString
方法を提供:
from pyspark.mllib.linalg import Vectors, SparseVector
v = SparseVector(5, [0, 3], [1.0, -1.0])
str(v)
## '(5,[0,3],[1.0,-1.0])'
assert Vectors.parse(str(v)) == v
import org.apache.spark.mllib.linalg.{Vectors, Vector}
Vectors.parse("(5,[0,3],[1.0,-1.0])")
// org.apache.spark.mllib.linalg.Vector = (5,[0,3],[1.0,-1.0])
あなたはプレーンテキストを避けたい場合は、寄木細工がそのまま使用可能別のオプションです:
(sc.parallelize([(SparseVector(5, [0, 3], [1.0, -1.0]),)])
.toDF()
.write
.parquet("/tmp/foo"))
val df = sqlContext.read.parquet("/tmp/foo")
df.printSchema()
// root
// |-- _1: vector (nullable = true)
Jsonは十分ではありませんか? – ipoteka
libsをサポートしているjsonにスパースベクトルを保存する標準的な方法はありますか?現在、spark mllibスパースベクトルを使用することを考えていますが、シリアライズ形式を確認する必要があります。 – x89a10