![](/img/trans.png)
[英]How to create a DataSet from RDD using Case Class with composed columns
[英]How to create a Spark Dataset from an RDD
我有一個RDD[LabeledPoint]
旨在用於機器學習管道。 我們如何將RDD
轉換為DataSet
? 請注意,較新的spark.ml
apis需要Dataset
格式的輸入。
這是一個遍歷額外步驟的答案 - DataFrame
。 我們使用SQLContext
創建一個DataFrame
,然后使用所需的對象類型創建一個DataSet
- 在本例中為LabeledPoint
:
val sqlContext = new SQLContext(sc)
val pointsTrainDf = sqlContext.createDataFrame(training)
val pointsTrainDs = pointsTrainDf.as[LabeledPoint]
更新曾經聽說過SparkSession
? (直到現在我都沒...)
顯然SparkSession
是Spark 2.0.0中的Preferred Way (TM)並且向前發展。 以下是新(火花)世界順序的更新代碼:
Spark 2.0.0+方法
請注意,在以下兩種方法中(較簡單的一種方法是@ 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()
傳統的Spark 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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.