如何从 RDD 创建 Spark 数据集
How to create a Spark Dataset from an RDD
我有一个 RDD[LabeledPoint]
打算在机器学习管道中使用。我们如何将 RDD
转换为 DataSet
?请注意,较新的 spark.ml
api 需要 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 中的 首选方式 (TM) 并向前发展。这是新的 (spark) 世界秩序的更新代码:
Spark 2.0.0+ 接近
请注意,与 SQLContext
方法相比,以下两种方法(其中更简单的方法归功于@zero323)我们已经实现了重要的节省:不再需要先创建一个 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()**
另请参阅: 作者:@zero323。
我有一个 RDD[LabeledPoint]
打算在机器学习管道中使用。我们如何将 RDD
转换为 DataSet
?请注意,较新的 spark.ml
api 需要 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 中的 首选方式 (TM) 并向前发展。这是新的 (spark) 世界秩序的更新代码:
Spark 2.0.0+ 接近
请注意,与 SQLContext
方法相比,以下两种方法(其中更简单的方法归功于@zero323)我们已经实现了重要的节省:不再需要先创建一个 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()**
另请参阅: