У меня есть RDD[LabeledPoint], предназначенный для использования в конвейере машинного обучения. Как мы преобразуем это RDD в DataSet? Обратите внимание, что новый spark.ml apis требует ввода в формате DataSet.
Как создать Spark Dataset из RDD
Ответ 1
Вот ответ, который проходит дополнительный шаг - DataFrame. Мы используем SQLContext для создания DataFrame, а затем создаем DataSet с использованием нужного типа объекта - в этом случае a LabeledPoint:
val sqlContext = new SQLContext(sc)
val pointsTrainDf =  sqlContext.createDataFrame(training)
val pointsTrainDs = pointsTrainDf.as[LabeledPoint]
  Обновить Когда-либо слышал о  SparkSession? (и до сих пор я не был).
Таким образом, очевидно, что SparkSession является предпочтительным способом (TM) в Spark 2.0.0 и движется вперед. Вот обновленный код для нового (искрового) мирового порядка:
Подходы Spark 2.0.0+
Обратите внимание, что в обоих нижеприведенных подходах (более простой из которых credit @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 + Кредит @zero323
val spark: org.apache.spark.sql.SparkSession = ???
import spark.implicits._
val trainDs = training.toDS()
Традиционный искры 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()**
Смотрите также: Как сохранить пользовательские объекты в Dataset? по уважаемому @zero323.
