web-dev-qa-db-ja.com

RDDからSpark=データセットを作成する方法

機械学習パイプライン内で使用するためのRDD[LabeledPoint]があります。 RDDDataSetに変換するにはどうすればよいですか?新しいspark.ml AP​​IにはDataset形式の入力が必要です。

14
javadba

余分なステップ-DataFrameを通過する回答を次に示します。 SQLContextを使用してDataFrameを作成し、目的のオブジェクトタイプ(この場合はDataSet)を使用してLabeledPointを作成します。

val sqlContext = new SQLContext(sc)
val pointsTrainDf =  sqlContext.createDataFrame(training)
val pointsTrainDs = pointsTrainDf.as[LabeledPoint]

UpdateSparkSessionを聞いたことがありますか? (これまで私もいなかった..)

したがって、明らかにSparkSessionは、Preferred Way(TM)Spark 2.0.0であり、前進している。新しい(スパーク)世界秩序のコード:

Spark 2.0.0+アプローチ

以下の両方のアプローチ(@ zero323の方が単純な方)で、SQLContextアプローチと比較して重要な節約を達成したことに注意してください。最初にDataFrameを作成する必要はなくなりました。

val sparkSession =  SparkSession.builder().getOrCreate()
val pointsTrainDf =  sparkSession.createDataset(training)
val model = new LogisticRegression()
   .train(pointsTrainDs.as[LabeledPoint])

Spark 2.0.0 +Credit to @ zero323

val spark: org.Apache.spark.sql.SparkSession = ???
import spark.implicits._

val trainDs = training.toDS()

従来のSpark 1.Xおよびそれ以前のアプローチ

val sqlContext = new SQLContext(sc)  // Note this is *deprecated* in 2.0.0
import sqlContext.implicits._
val training = splits(0).cache()
val test = splits(1)
val trainDs = training**.toDS()**

参照: カスタムオブジェクトをデータセットに保存する方法 評価の高い@ zero323による。

18
javadba