DataSet的介绍以及常用操作
概念
DataSet是分布式的数据集合,Dataset提供了强类型支持,也是在RDD的每行数据加了类型约束。DataSet是在Spark1.6中添加的新的接口。它集中了RDD的优点(强类型和可以用强大lambda函数)以及使用了Spark SQL优化的执行引擎。DataSet可以通过JVM的对象进行构建,可以用函数式的转换(map/flatmap/filter)进行多种操作。
DataFrame、DataSet、RDD的区别
DataSet包含了DataFrame的功能,Spark2.0中两者统一,DataFrame表示为DataSet[Row],即DataSet的子集。
(1)DataSet可以在编译时检查类型
(2)并且是面向对象的编程接口
相比DataFrame,Dataset提供了编译时类型检查,对于分布式程序来讲,提交一次作业太费劲了(要编译、打包、上传、运行),到提交到集群运行时才发现错误,这会浪费大量的时间,这也是引入Dataset的一个重要原因。
创建DataSet
创建dataSet一共可以有四种方式
第一种方式:spark.createDataset(“已经存在的scala集合”)
第二种方式:spark.createDataset(“已经存在的RDD”)
第三种方式:已经存在的scala集合调用toDS
第四种方式:通过DataFrame转换变成DataSet
第一种方式创建DataSet
通过spark.createDataset通过集合进行创建dataSet
scala> val ds1 = spark.createDataset(1 to 10)
ds1: org.apache.spark.sql.Dataset[Int] = [value: int]
scala