RDD和DataFrame和DataSet三者间的区别

https://blog.csdn.net/deng624796905/article/details/80216168

https://blog.csdn.net/weixin_43087634/article/details/84398036

这两篇文章讲的很详细,大神级别的,可以拜读

DataFrame多了数据的结构信息,即schema。RDD是分布式的Java对象的集合。DataFrame是分布式的Row对象的集合。DataFrame除了提供了比RDD更丰富的算子以外,更重要的特点是提升执行效率、减少数据读取以及执行计划的优化

Dataframe的劣势在于在编译期缺少类型安全检查,导致运行时出错.

RDD (Spark1.0) —> Dataframe(Spark1.3) —> Dataset(Spark1.6)

1 RDD
RDD是Spark提供的最重要的抽象的概念,弹性的分布式数据集,它是一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式编操作集合的方式,进行各种并行操作。Spark的RDD内置了各种函数操作,举个例子,我们编写wordcount案例,如果使用mapreduce进行编程,还是很复杂的,如果用RDD的话代码量大大的减少(scala编程一句话搞定),所以相对mapreduce来说单从编程上就简化了很多。但是同时也出现了一个问题,学习Scala、python、java语言,那么这个使用的成本以及门槛就会很高了对于不太懂开发的人(DBA)想要使用spark是比较困难的。

DataFrame
对于DataFrame这一概念最早是出现在R和Pandas里面的,R语言是非常适合做一些数据统计和分析的一些操作,但是它仅支持单机的处理,随着互联网的快速发展,单机处理的日志、数据必然是很有限的,而且现在的日志/数据量是越来越大,随着spark的不断壮大,在spark里面就出现了DataFrame的API(1.3版本出现的)。
 

猜你喜欢

转载自blog.csdn.net/Alex_81D/article/details/103876833
今日推荐