DataFrame与RDD的区别

这里写图片描述

结合上图进行理解:

  • RDD与DataFrame都是分布式的 可以并行处理的 一个集合
  • 但是DataFrame更像是一个二维表格,在这个二维表格里面,我们是知道每一列的名称
    第一列是Name,它的类型是String
    第二列是Age,它的类型是Int
    第三列是Height,它的类型是Double
    而对于DataFrame来说,它不仅可以知道里面的数据,而且它还可以知道里面的schema信息
    因此能做的优化肯定也是更多的,举个例子:
    因为每一列的数据类型是一样的,因此可以采用更好的压缩,这样的话整个DF存储所占用的东西必然是比RDD要少很多的(这也是DF的优点)
    想要优化的更好,所要暴露的信息就需要更多,这样系统才能更好大的进行优化
    RDD的类型可以是Person,但是这个Person里面,我们是不知道它的Name,Age,Height的,因此相比DF而言更难进行优化

这里写图片描述
结合上图进行理解:

  • Java/Scala 操作RDD的底层是跑在JVM上的
    Python 操作RDD的底层不跑在JVM上,它有Python Execution
    因此使用RDD编程带来一个很大的问题:
    由于使用不同语言操作RDD,底层所运行的环境不同(使用Java/Scala 与 Python 所运行的效率完全是不一样的,Python是会慢一些的)
  • 但是有了DataFrame是不一样的
    DF不是直接到运行环境的,中间还有一层是logicplan,统统先转换成逻辑执行计划之后,再去进行运行的;所以现在DF不管采用什么语言,它的执行效率都是一样的

从编程时,引入的依赖包角度进行理解:
我们会发现在工作中,只需要添加Spark SQL的依赖就可以了,不需要再特地添加Spark Core的依赖了
因为Spark SQL也需要依赖Spark Core,因此可以不添加Spark Core的依赖

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值