一:存储
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也不是面向对象风格的.## 标题