Bir makine öğrenme hattında kullanılmak üzere bir RDD[LabeledPoint]
kullanıyorum. RDD
'u DataSet
'a nasıl dönüştürebiliriz? Daha yeni spark.ml
apis, Dataset
biçiminde girişler gerektirir.Bir RDD'den bir Spark Veri Kümesi nasıl oluşturulur
cevap
DataFrame
- Ek bir adımı aşan bir cevap İşte. Biz DataFrame
oluşturmak için SQLContext
kullanmak ve istenen nesne türünü kullanarak bir DataSet
oluşturmak - Bir LabeledPoint
bu durumda:
val sqlContext = new SQLContext(sc)
val pointsTrainDf = sqlContext.createDataFrame(training)
val pointsTrainDs = pointsTrainDf.as[LabeledPoint]
Güncelleme Hiç bir SparkSession
duydunuz mu? (Şu ana kadar bende hiç ..)
Görünüşe göre, SparkSession
, Spark 2.0.0'da Tercih Edilen Yol (TM) ve ileriye doğru ilerliyor. İşte yeni (kıvılcım) dünya düzeni için güncellenmiş kodudur:
biz başardık (daha basit bir zero323 @ hangi kredi ait) altına yaklaşımların her ikisi de
Bildirimi yaklaşımları 2.0.0+ Kıvılcım SQLContext
yaklaşımına kıyasla önemli tasarruf: Artık bir DataFrame
oluşturmak için gerekli değildir. için Spark 2.0.0+ Kredi için
val sparkSession = SparkSession.builder().getOrCreate()
val pointsTrainDf = sparkSession.createDataset(training)
val model = new LogisticRegression()
.train(pointsTrainDs.as[LabeledPoint])
İkinci yol da zero323
val spark: org.apache.spark.sql.SparkSession = ???
import spark.implicits._
val trainDs = training.toDS()
Geleneksel Kıvılcım 1.X ve önceki yaklaşımla
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()**
bakınız @: How to store custom objects in Dataset? tarafından saygın @ zero323.
Nasıl "training.toDS"? – zero323
@ zero323 ah, görüyorum ki 'sqlContext._' içe aktarma ihtiyacım var. – javadba
@ zero323 Yeterli bilgi eklediniz - kendi cevabınızı eklemekten çekinmeyin – javadba