簡體   English   中英

如何從RDD創建Spark數據集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM