9.4 什么是 DataSet
是
DataFrame API
的一个扩展,是 SparkSQL 最新的数据抽象(1.6新增)。用户友好的API风格,既具有类型安全检查也具有
DataFrame
的查询优化特性。Dataset
支持编解码器,当需要访问非堆上的数据时可以避免反序列化整个对象,提高了效率。样例类被用来在
DataSet
中定义数据的结构信息,样例类中每个属性的名称直接映射到DataSet
中的字段名称。DataFrame
是DataSet
的特列,DataFrame=DataSet[Row]
,所以可以通过as
方法将DataFrame
转换为DataSet
。Row
是一个类型,跟Car、Person
这些的类型一样,所有的表结构信息都用Row
来表示。DataSet
是强类型的。比如可以有DataSet[Car]
,DataSet[Person]
.DataFrame
只是知道字段,但是不知道字段的类型,所以在执行这些操作的时候是没办法在编译的时候检查是否类型失败的,比如你可以对一个String
进行减法操作,在执行的时候才报错,而DataSet
不仅仅知道字段,而且知道字段类型,所以有更严格的错误检查。就跟JSON
对象和类对象之间的类比。