spark基础之RDD和DataFrame和Dataset比较
一 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比较相关推荐
- spark sql定义RDD、DataFrame与DataSet
RDD 优点: 编译时类型安全 编译时就能检查出类型错误 面向对象的编程风格 直接通过类名点的方式来操作数据 缺点: 序列化和反序列化的性能开销 无论是集群间的通信, 还是IO操作都需要对对象的结构和 ...
- spark基础之RDD和DataFrame的转换方式
一 通过定义Case Class,使用反射推断Schema 定义Case Class,在RDD的转换过程中使用Case Class可以隐式转换成SchemaRDD,然后再注册成表,然后就可以利用sql ...
- 【大数据开发】SparkSQL——RDD、DataFrame、DataSet相互转换、DSL常用方法、SQL风格语法、Spark读写操作、获取Column对象的方式
take,takeAsList是Action操作 limit⽅法获取指定DataFrame的前n⾏记录,得到⼀个新的DataFrame对象.和take与head不同的是,limit⽅法不是Action ...
- Spark中RDD、DataFrame和DataSet的区别与联系
一.RDD.DataFrame和DataSet的定义 在开始Spark RDD与DataFrame与Dataset之间的比较之前,先让我们看一下Spark中的RDD,DataFrame和Dataset ...
- 大数据入门:Spark RDD、DataFrame、DataSet
在Spark的学习当中,RDD.DataFrame.DataSet可以说都是需要着重理解的专业名词概念.尤其是在涉及到数据结构的部分,理解清楚这三者的共性与区别,非常有必要.今天的大数据入门分享,我们 ...
- 专业工程师看过来~ | RDD、DataFrame和DataSet的细致区别
作者:苏小宝,现任华为工程师. RDD.DataFrame和DataSet是容易产生混淆的概念,必须对其相互之间对比,才可以知道其中异同. RDD和DataFrame 上图直观地体现了DataFram ...
- RDD、DataFrame和DataSet
简述 RDD.DataFrame和DataSet是容易产生混淆的概念,必须对其相互之间对比,才可以知道其中异同:DataFrame多了数据的结构信息,即schema.RDD是分布式的 Java对象的集 ...
- RDD、DataFrame、DataSet原理解析
一.RDD.DataFrame.DataSet三者概念 1. RDD:全称Resilient Distributed Dataset,弹性分布式数据集,Spark中最基础的数据抽象,特点是RDD只包含 ...
- RDD和DataFrame和Dataset比较
一 SparkSQL简介 Spark SQL是一个能够利用Spark进行结构化数据的存储和操作的组件,结构化数据可以来自外部结构化数据源也可以通过RDD获取. 外部的结构化数据源包括Hive,JSON ...
最新文章
- 实现一个 能在O(1)时间复杂度 完成 Push、Pop、Min操作的 栈
- QIIME 2用户文档. 22Python命令行模式(2019.7)
- MySQL安装失败出现could not start the service mysql error:0 错误提示
- php 学习笔记 数组2
- 家庭安全摄像头:应选择本地还是云端存储?
- java中closeable_java的Closeable接口和Cloneable接口
- 【Redis】Redis 乐观锁
- c语音学习-输入一个小写字母,输出其对应的大写字母
- java类加载机制ClassLoad
- 거든---表示条件,后接祈使,劝诱,意志语句
- 论文赏析[ACL18]直接到树:基于神经句法距离的成分句法分析
- (一)洞悉linux下的Netfilteriptables:什么是Netfilter?
- PHP计算字符串长度
- SDN技术的发展应用任重而道远
- 西门子200smart与8台v90伺服驱动器Profinet通讯,控制8台伺服电机
- GCC 预处理的宏 (predefined macros)
- 腾讯云服务器添加虚拟内存
- 邱姓女孩五行缺水取名
- 李有志——预谋着向生活发起冲锋...
- 推荐系统视频行业揭秘,“抖音快手”现象级产品背后的推荐逻辑
热门文章
- 电热耦合_作者特稿︱电网运行环境下基于电热耦合潮流的架空线路应力预估
- java如何画百分比圆环_canvas绘制旋转的圆环百分比进度条
- Python机器学习:线型回归法01简单线型回归法
- linux命令行安装libxml,Ubuntu 14.04下libxml2的安装和使用
- Linux指令设置波特率停止位,linux下的picocom怎么设置停止位,波特率
- php写按条件查询代码,php如何实现按条件查询
- php里的header,PHP中常用的header头部定义有哪些
- (三)Netty之Channel通道
- java tostringutils_Java之StringUtils的常用方法
- Maven项目代码中定位resources文件夹下的文件目录,解决文件不存在的问题