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

RDD,作为Spark的核心数据抽象,是Spark当中不可或缺的存在,而在SparkSQL中,Spark为我们提供了两个新的抽象,分别是DataFrame和DataSet。

DataFrame、DataSet和RDD有什么区别?

首先从版本的产生上来看:

RDD(Spark1.0)—>Dataframe(Spark1.3)—>Dataset(Spark1.6)

如果同样的数据都给到这三个数据结构,他们分别计算之后,都会给出相同的结果。不同是的他们的执行效率和执行方式。

在后期的Spark版本中,DataSet会逐步取代RDD和DataFrame成为唯一的API接口。

RDD、DataFrame、DataSet三者的共性

RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利。

三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action如foreach时,三者才会开始遍历运算。

三者都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出。

三者都有partition的概念。

三者有许多共同的函数,如filter,排序等。

RDD、DataFrame、DataSet三者的区别

RDD:

RDD一般和spark mlib同时使用。

RDD不支持sparksql操作。

DataFrame:

①与RDD和Dataset不同,DataFrame每一行的类型固定为Row,只有通过解析才能获取各个字段的值。

②DataFrame引入了schema和off-heap

schema:RDD每一行的数据,结构都是一样的。这个结构就存储在schema中。Spark通过schame就能够读懂数据,因此在通信和IO时就只需要序列化和反序列化数据,而结构的部分就可以省略了。

off-heap:意味着JVM堆以外的内存,这些内存直接受操作系统管理(而不是JVM)。Spark能够以二进制的形式序列化数据(不包括结构)到off-heap中,当要操作数据时,就直接操作off-heap内存。由于Spark理解schema,所以知道该如何操作。

off-heap就像地盘,schema就像地图,Spark有地图又有自己地盘了,就可以自己说了算了,不再受JVM的限制,也就不再收GC的困扰了。

③结构化数据处理非常方便,支持Avro,CSV,Elasticsearch数据等,也支持Hive,MySQL等传统数据表。

④兼容Hive,支持Hql、UDF

有schema和off-heap概念,DataFrame解决了RDD的缺点,但是却丢了RDD的优点。DataFrame不是类型安全的(只有编译后才能知道类型错误),API也不是面向对象风格的。

Dataset:

①DataSet集中了RDD的优点(强类型和可以用强大lambda函数)以及Spark SQL优化的执行引擎。DataSet可以通过JVM的对象进行构建,可以用函数式的转换(map/flatmap/filter)进行多种操作。

②DataSet结合了RDD和DataFrame的优点,并带来的一个新的概念Encoder。DataSet通过Encoder实现了自定义的序列化格式,使得某些操作可以在无需序列化情况下进行。另外Dataset还进行了包括Tungsten优化在内的很多性能方面的优化。

③Dataset<Row>等同于DataFrame(Spark 2.X)

RDD与DataFrame之间的互相转换

Spark SQL支持两种RDDs转换为DataFrames的方式:

①使用反射获取RDD内的Schema。当已知类的Schema的时候,使用这种基于反射的方法会让代码更加简洁而且效果也很好。

②通过编程接口指定Schema。通过Spark SQL的接口创建RDD的Schema,这种方式会让代码比较冗长。这种方法的好处是,在运行时才知道数据的列以及列的类型的情况下,可以动态生成Schema。

关于大数据入门,Spark RDD、DataFrame、DataSet,以上就为几个重要的概念作了基本的介绍了。Spark当中,从RDD到Dataframe、Dataset,其实是一个渐进发展的过程,由易到难会非常好上手。

大数据入门:Spark RDD、DataFrame、DataSet相关推荐

  1. 尚硅谷大数据技术Spark教程-笔记09【SparkStreaming(概念、入门、DStream入门、案例实操、总结)】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表[课程资料下载] 视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[SparkCore ...

  2. Spark _25.plus _使用idea读取Hive中的数据加载成DataFrame/DataSet(四)

    对Spark _25 _读取Hive中的数据加载成DataFrame/DataSet(四) https://georgedage.blog.csdn.net/article/details/10309 ...

  3. Spark _25 _读取Hive中的数据加载成DataFrame/DataSet(四)

    由于Hive不在本地,操作略显麻烦.不过细心一点,分析错误,也还好,如果你搭建的hadoop是HA,需要多注意: 这里指出一个错误,如果你报了同类错误,可以参考:https://georgedage. ...

  4. 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  5. 大数据之Spark(四):Spark SQL

    一.SparkSQL的发展 1.1 概述 SparkSQL是Spark⽣态体系中的构建在SparkCore基础之上的⼀个基于SQL的计算模块. SparkSQL的前身不叫SparkSQL,⽽叫Shar ...

  6. 大数据课程——Spark SQL

    大数据课程--Spark SQL   实验内容以及要求 现有一份汽车销售记录(文件名:Cars.csv),销售记录包括时间.地点.邮政编码.车辆类型等信息,每条记录信息包含39项数据项.按步骤完成如下 ...

  7. 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  8. 大数据篇--Spark常见面试题总结一

    文章目录 一.Spark 概念.模块 1.相关概念: 2.基本模块: 二.Spark作业提交流程是怎么样的 三.Spark on YARN两种方式的区别以及工作流程 1.Yarn组件简介: 2.Spa ...

  9. 大数据之Spark:Structured Streaming

    目录 1. API 2. 核心思想 3. 应用场景 4.Structured Streaming 实战 1) 读取 Socket 数据 2) 读取目录下文本数据 3) 计算操作 4) 输出 在 2.0 ...

最新文章

  1. android 图片横竖判断_Android横竖屏切换及其对应布局加载问题详解
  2. 一种安全的static变量Get/Set方式
  3. oracle密码加密工具下载,oracle加密工具wrap
  4. Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)2
  5. python实践系列之(一)安装 python/pip/numpy/matplotlib
  6. BZOJ 1283 费用流
  7. 兼容超大图片的处理_N年都没弄明白!PS保存的图片格式都啥意思?
  8. oracle授权with,Oracle With 语句语法及示例
  9. 裴礼文数学分析中的典型问题与方法第2章一元函数的连续性练习
  10. xpath的常见操作
  11. Linux 用户的手边工具:Guide to Linux
  12. js 数组 删除第一个和最后一个
  13. js第8章事件案例:获取触发事件的元素,阻止事件冒泡和默认行为的实现、缓动的小球、图片放大特效、按Enter键切换
  14. 解读微软互联网新战略(下)
  15. 16光8电全千兆宽温工业交换机16千兆光8千兆网口机架式网管型工业级以太网交换机
  16. C++中字符串的三种定义和引用方法
  17. 7 数据挖掘案例实战1—百度新闻标题、网址、日期及来源
  18. 数据库不断有新数据插入, 导致分页查询数据重复的问题
  19. 实习日记 7.11
  20. dell灵越笔记本后盖怎么拆_dell笔记本拆机详解【图文教程】

热门文章

  1. Linux开机启动流程分析
  2. 西邮Linux小组2019-2021面试试题二三事
  3. 【产品经理】002-梁宁·产品思维30讲-同理心
  4. ubuntu ppoe拨号上网
  5. 安网路由器 静态IP和PPOE混用时,如果设置了路由器定时重启可能导致路由器罢工...
  6. 幼儿园科学教案计算机,大班科学教案4篇
  7. 一年级计算机课ppt,一年级信息技术全部课程PPT课件.ppt
  8. Whale 帷幄技术周大咖分享:AI 迎来大洗牌
  9. 模板引擎应用案例- 学生档案管理
  10. c# mysql 连接串_c#数据库连接字符串集合