[英]Spark Dataset using case class
當我們必須將 Spark Dataframe 轉換為數據集時。 我們一般使用案例 class。 這意味着我們正在將一行 un-Type 轉換為 Type。 例子:
case class MyData (Name: String, Age: Int)
import spark.implicits._
val ds = df.as[MyData]
假設我有一個 RDD & 映射與案例 class 然后轉換為 dataframe。 為什么最后 dataframe 顯示 Dataset[Row]。
case class MyData(Name: String, Age: Int)
object learning extends App{
val spark = SparkSession.builder()
.appName("dataFrames")
.config("spark.master", "local")
.getOrCreate()
val data = Seq(("A",100),("B",300),("C",400))
val rdd = spark.sparkContext.parallelize(data)
val rddNew = rdd.map( x => MyData(x._1,x._2) )
val newDataFrame = spark.createDataFrame(rddNew)
newDataFrame.show()
}
為什么這個 dataframe 不顯示為 Dataset[MyData]?
這是因為DataFrame
spark.createDataFrame
相當於Dataset[Row]
。
如果您希望返回類型為Dataset[MyData]
,請使用spark.createDataset
:
import spark.implicits._
val newDataset: Dataset[MyData] = spark.createDataset[MyData](rddNew)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.