目录
0. 相关文章链接
1. DataSet的定义
2. 创建DataSet
2.1. 使用样例类序列创建 DataSet
2.2. 使用基本类型的序列创建 DataSet
2.3. 注意
3. RDD 转换为 DataSet
4. DataSet 转换为 RDD
0. 相关文章链接
Spark文章汇总
1. DataSet的定义
DataSet 是具有强类型的数据集合,需要提供对应的类型信息。
2. 创建DataSet
2.1. 使用样例类序列创建 DataSet
scala> case class Person(name: String, age: Long)
defined class Person
scala> val caseClassDS = Seq(Person("zhangsan",2)).toDS()
caseClassDS: org.apache.spark.sql.Dataset[Person] = [name: string, age: Long]
scala> caseClassDS.show
+---------+---+
| name |age|
+---------+---+
| zhangsan| 2 |
+---------+---+
2.2. 使用基本类型的序列创建 DataSet
scala> val ds = Seq(1,2,3,4,5).toDS
ds: org.apache.spark.sql.Dataset[Int] = [value: int]
scala> ds.show
+-----+
|value|
+-----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+-----+
2.3. 注意
在实际使用的时候,很少用到把序列转换成DataSet,更多的是通过RDD来得到DataSet
3. RDD 转换为 DataSet
SparkSQL 能够自动将包含有 case 类的 RDD 转换成 DataSet, case 类定义了 table 的结构, case 类属性通过反射变成了表的列名。 Case 类可以包含诸如 Seq 或者 Array 等复杂的结构。
scala> case class User(name:String, age:Int)
defined class User
scala> sc.makeRDD(List(("zhangsan",30), ("lisi",49))).map(t=>User(t._1,t._2)).toDS
res11: org.apache.spark.sql.Dataset[User] = [name: string, age: int]
4. DataSet 转换为 RDD
DataSet 其实也是对 RDD 的封装,所以可以直接获取内部的 RDD文章来源:https://www.toymoban.com/news/detail-547063.html
scala> case class User(name:String, age:Int)
defined class User
scala> sc.makeRDD(List(("zhangsan",30), ("lisi",49))).map(t=>User(t._1,t._2)).toDS
res11: org.apache.spark.sql.Dataset[User] = [name: string, age: int]
scala> val rdd = res11.rdd
rdd: org.apache.spark.rdd.RDD[User] = MapPartitionsRDD[51] at rdd at <console>:25
scala> rdd.collect
res12: Array[User] = Array(User(zhangsan,30), User(lisi,49))
注:其他Spark相关系列文章链接由此进 -> Spark文章汇总 文章来源地址https://www.toymoban.com/news/detail-547063.html
到了这里,关于Spark(16):SparkSQL之DataSet的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!