一 SparkSQL简介

Spark SQL是一个能够利用Spark进行结构化数据的存储和操作的组件,结构化数据可以来自外部结构化数据源也可以通过RDD获取。

外部的结构化数据源包括Hive,JSON,Parquet,RMDBS等。当前Spark SQL使用Catalyst优化器来对SQL进行优化,从而得到更加高效的执行方案。并且可以将结果存储到外部系统。

二 DataFrame & Dataset介绍

2.1DataFrame 介绍

DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据块中的表,它与RDD最主要的区别在于:DataFrame有schema元数据,即DataFrame所表示的数据集的每一列都有名称和数据类型。正是因为有了这些schema元数据,Sparl SQL的查询优化器就可以进行针对性的优化

2.2 Dataset介绍

Dataset也是一种分布式数据集,可以使用map,flatmap等函数进行转换,DataFrame是一个Dataset的特例,等价于Dataset[Row]; Dataset的操作分为transformation和action 两种,transformation用于创建新的Dataset,而action用于计算操作;它和RDD一样具有惰性,只有action操作被调用的时候才会进行计算;DataSet创立需要一个显式的Encoder,把对象序列化为二进制

三 RDD、DataFrame、Dataset之间的比较

3.1 相同点

#  RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集

# 三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行。只有在执行action操作的时候,才会进行计算。

3.2 不同点

3.2.1 RDD和 DataFrame的比较

# 前者没有schema信息;后者有schema信息

# RDD无法得知所存的数据元素的具体内部结构,Spark Core只能在stage层面进行简单的优化;后者因为有schema信息,Sparl SQL的查询优化器就可以进行针对性的优化

# RDD通过函数式调用API,虽然简洁明了,但是需要创建新的对象,不容易重用旧的对象,给GC带来挑战;DataFrame是尽可能的重用对象

3.2.2 DataFrame和 Dataset的比较

# DataFrame是带有类型的,即需要指定类型;但是DataFrame无需指定类型。DataFrame是一个Dataset的特例,等价于Dataset[Row]

# DataFrame带有schema,而DataSet没有schema

spark基础之RDD和DataFrame和Dataset比较相关推荐

  1. spark sql定义RDD、DataFrame与DataSet

    RDD 优点: 编译时类型安全 编译时就能检查出类型错误 面向对象的编程风格 直接通过类名点的方式来操作数据 缺点: 序列化和反序列化的性能开销 无论是集群间的通信, 还是IO操作都需要对对象的结构和 ...

  2. spark基础之RDD和DataFrame的转换方式

    一 通过定义Case Class,使用反射推断Schema 定义Case Class,在RDD的转换过程中使用Case Class可以隐式转换成SchemaRDD,然后再注册成表,然后就可以利用sql ...

  3. 【大数据开发】SparkSQL——RDD、DataFrame、DataSet相互转换、DSL常用方法、SQL风格语法、Spark读写操作、获取Column对象的方式

    take,takeAsList是Action操作 limit⽅法获取指定DataFrame的前n⾏记录,得到⼀个新的DataFrame对象.和take与head不同的是,limit⽅法不是Action ...

  4. Spark中RDD、DataFrame和DataSet的区别与联系

    一.RDD.DataFrame和DataSet的定义 在开始Spark RDD与DataFrame与Dataset之间的比较之前,先让我们看一下Spark中的RDD,DataFrame和Dataset ...

  5. 大数据入门:Spark RDD、DataFrame、DataSet

    在Spark的学习当中,RDD.DataFrame.DataSet可以说都是需要着重理解的专业名词概念.尤其是在涉及到数据结构的部分,理解清楚这三者的共性与区别,非常有必要.今天的大数据入门分享,我们 ...

  6. 专业工程师看过来~ | RDD、DataFrame和DataSet的细致区别

    作者:苏小宝,现任华为工程师. RDD.DataFrame和DataSet是容易产生混淆的概念,必须对其相互之间对比,才可以知道其中异同. RDD和DataFrame 上图直观地体现了DataFram ...

  7. RDD、DataFrame和DataSet

    简述 RDD.DataFrame和DataSet是容易产生混淆的概念,必须对其相互之间对比,才可以知道其中异同:DataFrame多了数据的结构信息,即schema.RDD是分布式的 Java对象的集 ...

  8. RDD、DataFrame、DataSet原理解析

    一.RDD.DataFrame.DataSet三者概念 1. RDD:全称Resilient Distributed Dataset,弹性分布式数据集,Spark中最基础的数据抽象,特点是RDD只包含 ...

  9. RDD和DataFrame和Dataset比较

    一 SparkSQL简介 Spark SQL是一个能够利用Spark进行结构化数据的存储和操作的组件,结构化数据可以来自外部结构化数据源也可以通过RDD获取. 外部的结构化数据源包括Hive,JSON ...

最新文章

  1. 实现一个 能在O(1)时间复杂度 完成 Push、Pop、Min操作的 栈
  2. QIIME 2用户文档. 22Python命令行模式(2019.7)
  3. MySQL安装失败出现could not start the service mysql error:0 错误提示
  4. php 学习笔记 数组2
  5. 家庭安全摄像头:应选择本地还是云端存储?
  6. java中closeable_java的Closeable接口和Cloneable接口
  7. 【Redis】Redis 乐观锁
  8. c语音学习-输入一个小写字母,输出其对应的大写字母
  9. java类加载机制ClassLoad
  10. 거든---表示条件,后接祈使,劝诱,意志语句
  11. 论文赏析[ACL18]直接到树:基于神经句法距离的成分句法分析
  12. (一)洞悉linux下的Netfilteriptables:什么是Netfilter?
  13. PHP计算字符串长度
  14. SDN技术的发展应用任重而道远
  15. 西门子200smart与8台v90伺服驱动器Profinet通讯,控制8台伺服电机
  16. GCC 预处理的宏 (predefined macros)
  17. 腾讯云服务器添加虚拟内存
  18. 邱姓女孩五行缺水取名
  19. 李有志——预谋着向生活发起冲锋...
  20. 推荐系统视频行业揭秘,“抖音快手”现象级产品背后的推荐逻辑

热门文章

  1. 电热耦合_作者特稿︱电网运行环境下基于电热耦合潮流的架空线路应力预估
  2. java如何画百分比圆环_canvas绘制旋转的圆环百分比进度条
  3. Python机器学习:线型回归法01简单线型回归法
  4. linux命令行安装libxml,Ubuntu 14.04下libxml2的安装和使用
  5. Linux指令设置波特率停止位,linux下的picocom怎么设置停止位,波特率
  6. php写按条件查询代码,php如何实现按条件查询
  7. php里的header,PHP中常用的header头部定义有哪些
  8. (三)Netty之Channel通道
  9. java tostringutils_Java之StringUtils的常用方法
  10. Maven项目代码中定位resources文件夹下的文件目录,解决文件不存在的问题