2016-05-29 34 views

Odpowiedz

14

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.

+0

Co powiesz na 'training.toDS'? – zero323

+0

@ zero323 ah, widzę, że muszę "importować sqlContext._'. Po aktualizacji. – javadba

+0

@ zero323 Dodałeś wystarczające informacje - dodaj własną odpowiedź: – javadba