Mam RDD[LabeledPoint]
przeznaczony do użycia w ramach uczenia maszynowego. Jak przekonwertować ten RDD
na DataSet
? Uwaga: nowszy numer spark.ml
wymaga wejść w formacie Dataset
.Jak utworzyć zestaw danych Spark z RDD
Odpowiedz
Oto odpowiedź, która przechodzi dodatkowy krok - DataFrame
. Używamy SQLContext
stworzyć DataFrame
a następnie utworzyć DataSet
używając żądany typ obiektu - w tym przypadku LabeledPoint
:
val sqlContext = new SQLContext(sc)
val pointsTrainDf = sqlContext.createDataFrame(training)
val pointsTrainDs = pointsTrainDf.as[LabeledPoint]
Aktualizacja słyszał o SparkSession
? (nie miałem też do tej pory ..)
Najwyraźniej SparkSession
jest preferowaną metodą (TM) w Spark 2.0.0 i posuwa się naprzód. Oto kod zaktualizowane do nowej (zapłonowej) porządku świata:
Spark 2.0.0+ zbliża
zawiadomienie w obu z poniższych metod (prostsza od których kredyt @ zero323 jeden) dokonaliśmy istotne oszczędności w porównaniu z podejściem SQLContext
: nie jest już konieczne tworzenie najpierw DataFrame
.
val sparkSession = SparkSession.builder().getOrCreate()
val pointsTrainDf = sparkSession.createDataset(training)
val model = new LogisticRegression()
.train(pointsTrainDs.as[LabeledPoint])
Drugi sposób Spark 2.0.0+ Kredyty na @ zero323
val spark: org.apache.spark.sql.SparkSession = ???
import spark.implicits._
val trainDs = training.toDS()
Tradycyjne 1.X zapłonową i wcześniejszego podejścia
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()**
Zobacz także: How to store custom objects in Dataset? przez cenione @ zero323.
Co powiesz na 'training.toDS'? – zero323
@ zero323 ah, widzę, że muszę "importować sqlContext._'. Po aktualizacji. – javadba
@ zero323 Dodałeś wystarczające informacje - dodaj własną odpowiedź: – javadba