2017-10-11 11 views
0

次のとおりです。this exampleいくつかのドキュメントでTF-IDFの重み付けを計算しました。今私はRowMatrixを使用してドキュメントの類似性を計算したいと考えています。しかし、データを適切な形式に合わせるのに問題があります。私が今持っているのは、行が(String、SparseVector)を2つの列の型として持つDataFrameです。私は、私は同じように簡単だろうと思ったRDD[Vector]にこれを変換することになってる:Sparkでは、SparseVectorでDataFrameをRDD [Vector]に変換する方法は?

features.map(row => row.getAs[SparseVector](1)).rdd() 

しかし、私はこのエラーを取得:spark.implicits._のインポート

<console>:58: error: Unable to find encoder for type stored in a 
Dataset. Primitive types (Int, String, etc) and Product types (case 
classes) are supported by importing spark.implicits._ Support for 
serializing other types will be added in future releases. 

には違いはありません。

何が起こっているのですか?私はSparkが独自のベクトルデータ型をどのようにエンコードするのか分からないことに驚いています。

答えて

1

ちょうどRDDに変換してからmapに変換してください。

import org.apache.spark.ml.linalg._ 

val df = Seq((1, Vectors.sparse(1, Array(), Array()))).toDF 

df.rdd.map(row => row.getAs[Vector](1)) 
関連する問題