Spark[RDD-DataFrame-DataSet]
Spark三类简述
一. Spark2.x创建Spark对象
1 | val spark = SparkSession |
二. RDD,DataFrame和DataSet
1. RDD
优缺点
1 | 优点: |
2. DataFrame
核心特征
Schema:
包含了以ROW为单位的每行数据的列的信息;Spark通过Schema就能够读懂数据,因此在通信和IO时只需要序列化和反序列化数据,不需要考虑结构部分
off_heap:
Spark能够以二进制的形式序列化数据(不包含结构)到off-heap中,当要操作数据时,就直接操作off-heap内存
Tungsten:
新的执行引擎
Catalyst:
新的语法解析框架
优缺点
1 |
|
3. DataSet
核心特征(Encoder)
编译时的类型安全检查,性能极大的提升,内存使用极大降低,减少GC,极大的减少了网络数据的传输,极大的减少采用scala和java编程代码的差异性
DataFrame每一行对应一个Row,而DataSet的定义更加宽松,每一个record对应了一个任意的类型,DataFrame只是DataSet的一种特例
不同于Row是一个泛化的无类型JVM object,DataSet是由一系列的强类型JVM object组成的,Scala的case class或者java class定义.因此DataSet可以在变异时进行类型检查
DataSet以Catalyst逻辑执行计划表示,并且数据以编码的二进制形式被存储,不需要反序列化就可以执行sorting,shuffle等操作
DataSet创立需要一个显式的Encoder,把对象序列化为二进制