2016-05-29 10 views

Antwort

14

Hier ist eine Antwort, die einen zusätzlichen Schritt durchläuft - die DataFrame. Wir verwenden die SQLContext einen DataFrame zu erstellen und dann eine DataSet mit dem gewünschten Objekttyp erstellen - in diesem Fall ein LabeledPoint:

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

-Update Schon mal was von einem SparkSessiongehört? (Weder hatte ich bis jetzt ..)

Also scheinbar ist die SparkSession die bevorzugte Weg (TM) in Spark 2.0.0 und voran. Hier ist die aktualisierte Code für die neue (Funke) Weltordnung:

Funken 2.0.0+

Hinweis in den beiden folgenden Ansätze Ansätze (einfacher von denen Kredit @ zero323) wir erreicht haben ein wichtige Einsparungen gegenüber dem SQLContext Ansatz: es ist nicht mehr notwendig, zuerst eine DataFrame zu erstellen.

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

Zweiter Weg für Spark 2.0.0+ Credit @ zero323

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

val trainDs = training.toDS() 

Traditionelle Funken 1.x und früheren Ansatz

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()** 

Siehe auch: How to store custom objects in Dataset? durch das geschätzte @ zero323.

+0

Wie wäre es mit 'training.toDS'? – zero323

+0

@ zero323 ah, ich sehe, dass ich 'sqlContext._' importieren muss.Updating die Antwort. – javadba

+0

@ zero323 Sie haben genügend Informationen hinzugefügt - fühlen Sie sich frei, Ihre eigene Antwort hinzuzufügen – javadba