私はScalaを初めて使い、データフレームをrddに変換したいと思っています。 ラベルに、の機能は、MLlibの入力用にRDD[labelPoint]
に変換されます。しかし、私はWrappedArray
に対処する方法を見つけることができません。スカラーのデータフレーム(WrappedArray付き)をRDDに変換する[labelPoint]
scala> test.printSchema
root
|-- user_id: long (nullable = true)
|-- brand_store_sn: string (nullable = true)
|-- label: integer (nullable = true)
|-- money_score: double (nullable = true)
|-- normal_score: double (nullable = true)
|-- action_score: double (nullable = true)
|-- features: array (nullable = true)
| |-- element: string (containsNull = true)
|-- flag: string (nullable = true)
|-- dt: string (nullable = true)
scala> test.head
res21: org.apache.spark.sql.Row = [2533,10005072,1,2.0,1.0,1.0,WrappedArray(["d90_pv_1sec:1.4471580313422192", "d3_pv_1sec:0.9030899869919435", "d7_pv_1sec:0.9030899869919435", "d30_pv_1sec:1.414973347970818", "d90_pv_week_decay:1.4235871662780681", "d1_pv_1sec:0.9030899869919435", "d120_pv_1sec:1.4471580313422192"]),user_positive,20161130]
答えに感謝します!できます! –
er ...ラベルと疎な特徴ベクトルのようなフォーマットが必要です:LabeledPoint(ラベル、Vectors.sparse(3)、array( "d90_pv_1sec"、 "d3_pv_1sec")、Array(1.4471580313422192、0.9030899869919435)) –
あなたは、 t - 'LabeledPoint.features'は' org.apache.spark.mllib.linalg.Vector'とタイプします。これは必然的に 'Doubles'のベクトルであり、Strings/Arraysではなく - https://github.com/apache/sparkを参照してください。 /blob/master/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala#L41 –