1) 创建一个DateFrame
scala> val df = spark.read.json(“/opt/module/spark-local/people.json”)

df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]
2) 创建一个样例类
scala> case class Person(name: String,age: Long)
defined class Person
3) 将DataFrame转化为DataSet
scala> df.as[Person]

res5: org.apache.spark.sql.Dataset[Person] = [age: bigint, name: string]

这种方法就是在给出每一列的类型后,使用as方法,转成Dataset,这在数据类型是DataFrame又需要针对各个字段处理时极为方便。在使用一些特殊的操作时,一定要加上 import spark.implicits._ 不然toDF、toDS无法使用。

代码方式


//创建RDD
val rdd: RDD[(Int, String, Int)] = spark.sparkContext.makeRDD(List((1, “banzhang”, 20), (2, “jingjing”, 18), (3, “wangqiang”, 30)))
//RDD—->DataFrame
val df: DataFrame = rdd.toDF(“id”, “name”, “age”)
//DataFrame—->DataSet
val ds: Dataset[User] = df.as[User]