SparkSQL的编程模型

简介

  1. 一般将RDD称为Spark体系中的第一代编程模型
  2. DataFrame称为Spark体系中的第二代编程模型
  3. Dataset吸收了RDD的优点(强类型推断和函数式编程)和DataFrame中的优化(SQL优化引擎,内存列存储)成为Spark最新一代的编程模型

RDD

RDD:又称弹性分布式数据集,是Spark对数据进行的一种抽象,可以理解为Spark对数据的一种组织方式,RDD就是一种数据结构,里面包含了数据和操作数据的方法

  • 弹性
    • 数据可完全存放在内存中或完全存放在磁盘,也可部分存放在内存,部分存放在磁盘,并可以自动切换
    • RDD出错后可自动重新计算(通过血缘自动容错,即依赖关系)
    • 可checkpoint(设置检查点,用于容错),可persist或cache(缓存)
    • 里面的数据是分片的(也叫分区,partition),分片的大小可自由设置和细粒度调整
  • 分布式
    • RDD中的数据可存放在多个节点上
  • 数据集
    • 数据的集合

DataFrame

DataFrame:其思想来源于Python的pandas库,DataFrame在RDD的基础上加了Schema(描述数据的信息,可以认为是元数据)

优点:

  1. DataFrame配套了新的操作数据的方法,DataFrame API(如df.select())和SQL(select id, name from xx_table where …)
  2. 有了DataFrame这个高一层的抽象后,处理数据更加简单,甚至可以用SQL来处理数据,对开发者来说易用性有了很大的提升
  3. 通过DataFrame API或SQL处理数据,会自动经过Spark 优化器(Catalyst)的优化,即使程序或SQL的效率不高,也可以运行很快

DataSet

DataSet:相对于DataFrame,Dataset提供了强类型支持,为RDD的每行数据添加类型约束
Dataset中的数据

优点

  1. 使用Dataset API的程序会经过Spark SQL的优化器进行优化
  2. 目前仅支持Scala、Java API,尚未提供Python的API
  3. 相比DataFrame,Dataset提供了编译时类型检查,会在编译时就报错,便于编程
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值