RDD,DataFrame,Dataset的相同点和区别

相同点:
都是弹性分布式数据集,都有分区的概念和惰性机制,在进行创建、转换操作时不会立即执行,只有在遇到执行算子时,才会开始遍历计算。

区别
假设RDD中的两行数据长这样:
在这里插入图片描述
那么DataFrame中的数据长这样 :
在这里插入图片描述
那么Dataset中的数据长这样:
在这里插入图片描述

或者长这样(每行数据是个Object):
在这里插入图片描述

  • RDD是一个JVM驻内存对象,GC比较频繁,数据增加时Java序列化成本也会升高,不支持SparkSql,类型转化安全。
  • DataFrame包括数据的结构信息,类似于关系型数据库中的表,性能上比RDD要高。数据是弱类型的,在执行时检查类型,类型转化不安全,不能直接获取每一列的值。数据以二进制的方式存在于堆外内存,减少了GC次数。
  • Dataset可以认为是DataFrame的一个特例,数据只有一列,每一行的数据类型不确定,采用堆外内存存储,数据是强类型的,在编译时检查类型,类型转化安全。

当我们需要对数据集进行底层的转换和操作, 使用RDD。
当我们需要对数据进行高级处理时,使用DataFrame和Dataset。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值