多数据集抽象类型对比分析

spark抽象数据集列表
RDD
DataFrame
DataSet

  • ** 相同点**
    全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利
    三者都有惰性机制,在进行Transform操作时不会立即执行,在遇到Action操作时会正式提交作业执行。
    均采用spark的内存运算和优化策略,内存使用和执行效率上均可以得到保障。
    均有partition的概念,便于分布式并行计算处理,达到分而治之。
    均有许多共同的函数,如map、filter、sort等。
    在进行三者的相关操作时候,个别特殊操作时必须引入一个相同的包依赖。( 早期称为 import sqlContext.implicits.,最新版本称为import spark.implicits.)
    DF和DS均可以通过模式匹配获取内部的变量类型和值。
    DF和DS产生于SparkSql,天然支持SparkSql。
  • 区别点
    RDD
    不支持SparkSql操作,均需进行转成DF或是DS才行。
    类型是安全的,编译时候即可检查出类型错误。(强类型)
    机器间通信、IO操作均需要序列化、反序列化对象,性能开销大。
    DataFrame
    有scheme的RDD:比RDD增加了数据的描述信息。
    比RDD的API更丰富,增加了针对结构化数据API。
    只有一个固定类型的DataSet,即为DataFrame=DataSet[Row]
    序列化和反序列化时做了结构化优化,减少了不必要的结构化信息的序列化,提高了执行效率。
    DataSet
    强类型的DataFrame,与DF有完全相同的成员函数。
    每行的类型不固定,需要使用模式匹配case class后,获取实际的类信息、字段类型、字段值。
    访问对象数据时,比DF更加直接简单。
    在序列化和反序列化时,引入了Encoder机制,达到按需序列化和反序列化,不必像之前整个对象操作了,进一步提高了效率。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值