spark-dataframe与rdd的区别

一:存储

在这里插入图片描述

1.RDD[Person]是以Person为类型参数,但是,Person类的内部结构对于RDD而言却是不可知的。
2.DataFrame是一种以RDD为基础的分布式数据集,也就是分布式的Row对象的集合(每个Row对象代表一行记录),提供了详细的结构信息,也就是我们经常说的模式(schema),Spark SQL可以清楚地知道该数据集中包含哪些列、每列的名称和类型。

二:计算

在这里插入图片描述

rdd:表示一个类,笼统 scala、java开发,运营在jvm上
dataframe:是一个二维的表格,信息更具体,更加深度的优化schema信息(列裁剪,行过滤)查hive很方便,结构化的,逻辑执行计划,物理执行计划

三:RDD

RDD
优点:

编译时类型安全
编译时就能检查出类型错误
面向对象的编程风格
直接通过类名点的方式来操作数据
缺点:

序列化和反序列化的性能开销
无论是集群间的通信, 还是IO操作都需要对对象的结构和数据进行序列化和反序列化.
GC的性能开销
频繁的创建和销毁对象, 势必会增加GC

四:DataFrame

不受JVM的限制, 也就不再收GC的困扰了.

通过schema和off-heap, DataFrame解决了RDD的缺点, 但是却丢了RDD的优点. DataFrame不是类型安全的, API也不是面向对象风格的.## 标题

猜你喜欢

转载自blog.csdn.net/qq_43688472/article/details/85395739