spark三大弹性分布式数据集比较

三大弹性分布式数据集:RDD,DataFrame,Dataset 为高效处理超大型数据提供便利

RDD

优点:

1、编译类型安全:编译时就能检查类型错误

2、面向对象:直接通过类名.的方式操作数据

缺点:

1、序列化和反序列化开销大:无论是集群间通信还是IO操作都需对对象的结构和数据进行序列化和反序列化

2、GC的性能开销大:频繁的创建和销毁对象,增加GC

DataFrame

DataFrame引入了schema和offheap

1、schema:RDD每一行的数据结构都一样,这个结构存在schema中,spark通过schema就能读懂数据,因此在通信和IO时,就需序列和反序列化数据,而结构可省略

2、off-heap:意味着JVM以外的内存,这些内存直接受操作系统而非JVM,spark能以二进制形式序列化数据(不包括结构)到off-heap中当操作数据时,就直接操作off-heap内存,由于spark理解schema,所以知道该如何操作

总结:off-heap就像地盘,schema就像地图,spark有了地图和地盘就不再受JVM限制,也不再受GC困扰,通过schema和off-heap,DataFrame解决了RDD的缺点

缺点:DataFrame不是类型安全的,API也不是面向对象风格

DataSet

结合RDD和DataFrame优点,并加入Encoder概念,当序列化数据时,Encoder产生字节码与off-heap交互,能达到按需访问数据的效果,而不是反序列化整个对象

猜你喜欢

转载自blog.csdn.net/weixin_42744795/article/details/82026459