10

私はSparkとScalaに比較的慣れていません。

次のデータフレーム (Double の密な Vector から作成された単一の列) から始めています。

scala> val scaledDataOnly_pruned = scaledDataOnly.select("features")
scaledDataOnly_pruned: org.apache.spark.sql.DataFrame = [features: vector]

scala> scaledDataOnly_pruned.show(5)
+--------------------+
|            features|
+--------------------+
|[-0.0948337274182...|
|[-0.0948337274182...|
|[-0.0948337274182...|
|[-0.0948337274182...|
|[-0.0948337274182...|
+--------------------+

RDD に直接変換すると、 org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] のインスタンスが生成されます。

scala> val scaledDataOnly_rdd = scaledDataOnly_pruned.rdd
scaledDataOnly_rdd: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] = MapPartitionsRDD[32] at rdd at <console>:66

代わりに、この DF を org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector] のインスタンスに変換する方法を知っている人はいますか? これまでのところ、私のさまざまな試みは成功していません。

ご指摘ありがとうございます。

4

3 に答える 3

7

ただ見つけた:

val scaledDataOnly_rdd = scaledDataOnly_pruned.map{x:Row => x.getAs[Vector](0)}
于 2015-10-09T23:19:40.777 に答える
1
import org.apache.spark.mllib.linalg.Vectors

scaledDataOnly
   .rdd
   .map{
      row => Vectors.dense(row.getAs[Seq[Double]]("features").toArray)
     }
于 2016-03-10T11:34:08.433 に答える