在SparkSQL中Spark为我们提供了两个新的抽象,分别是DataFrame和DataSet。
他们和RDD有什么区别呢?首先从版本的产生上来看:
RDD (Spark1.0) —> Dataframe(Spark1.3) —> Dataset(Spark1.6)
如果同样的数据都给到这三个数据结构,他们分别计算之后,都会给出相同的结果。不同是的他们的执行效率和执行方式。
1.1.1 RDD
- RDD是一个懒执行的不可变的可以支持Lambda表达式的并行数据集合。
- RDD的最大好处就是简单,API的人性化程度很高。
- RDD的劣势是性能限制,它是一个JVM驻内存对象,这也就决定了存在GC的限制和数据增加时Java序列化成本的升高。
1.1.1 Dataframe
与RDD类似,DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema。