DataSet是具有强类型的数据集合,需要提供对应的类型信息。
创建
-
创建一个样例类
case class Person(name: String, age: Long)
-
创建DataSet
val personDs = Seq(Person("adam"), 20).toDS personDs.show /* +----+---+ |name|age| +----+---+ |adam| 20| +----+---+ */
RDD转换为DataSet
SparkSQL能够自动将包含有样例类的RDD转换成为DataFrame,样例类定义了表的结构,样例类属性通过反射形成了表的列。
-
创建一个RDD
val rdd = sc.textFile("E:\\IdeaProjects\\spark-demo\\files\\people.txt")
-
创建一个样例类
case class Person(name: String, age: Long)
-
将RDD转换为DataSet
val personRdd = rdd.map(x => { Person(x.split(",")(0), x.split(",")(1).trim.toLong) }) val personDs = personRdd.toDS() personDs.show /* +----+---+ |name|age| +----+---+ |adam| 18| |brad| 21| |carl| 13| +----+---+ */
DataSet转换为RDD
调用rdd方法即可
-
创建DataSet
val personDs = Seq(Person("adam"), 20).toDS personDs.show /* +----+---+ |name|age| +----+---+ |adam| 20| +----+---+ */
-
将DataSet转换为RDD
val personRdd = personDs.rdd
DataFrame与DataSet的互相操作
-
DataFrame转换为DataSet
-
创建一个DataFrame
val df = spark.read.json("E:\\IdeaProjects\\spark-demo\\files\\test.json")
-
创建一个样例类
case class Person(id: Long, name: String, age: Long)
-
将DataFrame转换为DataSet
val ds = df.as[Person]
-
-
DataSet转换为DataFrame
-
创建一个样例类
case class Person(id: Long, name: String, age: Long)
-
创建一个DataSet
val personDs = Seq(Person(1, "adam", 20)).toDS()
-
导入隐式转换
import spark.implicits._
-
将DataSet转换为DataFrame
val personDf = personDs.toDF()
-
网友评论