在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
大数据之Spark框架中RDD和DataFrame的区别是什么?RDD(提供了一种高度受限的共享内存模型;DataFrame是一种分布式的数据集,并且以列的方式组合的。在spark中RDD、DataFrame是最常用的数据类型,在使用的过程中你知道两者的区别和各自的优势吗?关于如何具体的应用我们今天就好好的分析一下。
一、RDD、DataFrame分别是什么?
1、什么是RDD?
RDD(Resilient Distributed Datasets)提供了一种高度受限的共享内存模型。即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低。RDD仍然足以表示很多类型的计算,包括MapReduce和专用的迭代编程模型(如Pregel)等。
2、什么是DataFrame?
DataFrame是一种分布式的数据集,并且以列的方式组合的。类似于关系型数据库中的表。可以说是一个具有良好优化技术的关系表。DataFrame背后的思想是允许处理大量结构化数据。提供了一些抽象的操作,如select、filter、aggregation、plot。DataFrame包含带schema的行。schema是数据结构的说明。相当于具有schema的RDD。
二、RDD、DataFrame有什么特性?
在Apache Spark 里面DF 优于RDD,但也包含了RDD的特性。RDD和DataFrame的共同特征是不可性、内存运行、弹性、分布式计算能力。
它允许用户将结构强加到分布式数据集合上。因此提供了更高层次的抽象。我们可以从不同的数据源构建DataFrame。例如结构化数据文件、Hive中的表、外部数据库或现有的RDDs。DataFrame的应用程序编程接口(api)可以在各种语言中使用,包括Python、Scala、Java和R。
1、RDD五大特性:
1.(必须的)可分区的: 每一个分区对应就是一个Task线程。
2.(必须的)计算函数(对每个分区进行计算操作)。
3.(必须的)存在依赖关系。
4.(可选的)对于key-value数据存在分区计算函数。
5.(可选的)移动数据不如移动计算(将计算程序运行在离数据越近越好)。
2、DataFrame特性:
1.支持从KB到PB级的数据量
2.支持多种数据格式和多种存储系统
3.通过Catalyst优化器进行先进的优化生成代码
4.通过Spark无缝集成主流大数据工具与基础设施
5.API支持Python、Java、Scala和R语言
三、RDD与DataFrame的区别
RDD是弹性分布式数据集,数据集的概念比较强一点。容器可以装任意类型的可序列化元素(支持泛型)RDD的缺点是无从知道每个元素的【内部字段】信息。意思是下图不知道Person对象的姓名、年龄等。

DataFrame也是弹性分布式数据集,但是本质上是一个分布式数据表,因此称为分布式表更准确。DataFrame每个元素不是泛型对象,而是Row对象。
DataFrame的缺点是Spark SQL DataFrame API 不支持编译时类型安全,因此,如果结构未知,则不能操作数据;同时,一旦将域对象转换为Data frame ,则域对象不能重构。
DataFrame=RDD-【泛型】+schema+方便的SQL操作+【catalyst】优化
DataFrame本质上是一个【分布式数据表】

DataFrame优于RDD,因为它提供了内存管理和优化的执行计划。总结为以下两点:
a.自定义内存管理:当数据以二进制格式存储在堆外内存时,会节省大量内存。除此之外,没有垃圾回收(GC)开销。还避免了昂贵的Java序列化。因为数据是以二进制格式存储的,并且内存的schema是已知的。
b.优化执行计划:这也称为查询优化器。可以为查询的执行创建一个优化的执行计划。优化执行计划完成后最终将在RDD上运行执行。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
大数据开发工程师需要了解的热门技术
目前大数据、人工智能、区块链已经成为未来互联网核心的发展趋势。人工智能技术还未成熟,而区块链的落地应用也缺乏市场的支撑,而大数据技术已经逐渐融入到各行各业,对于大数据开发工程师而言,哪些技术是受欢迎的?应该注重哪些方面技术的学习?
6973
2019-12-10 18:47:11
大数据测试的发展和困境分析
随着大数据技术的日益深入发展,大数据测试应运而生。可以预见,大数据测试将成为软件测试工程师的发展目标之一。可能对于许多人来讲,大数据测试还是一个十分陌生的概念。实际上,大数据测试不同于传统的软件测试,在测试类型、策略和工具上,都有很大的不同。本文将为大家仔细分析一下大数据测试的发展和困境,下面我们一起来看看!
8179
2020-03-03 23:44:15
程序员必须掌握的大数据分析核心技术有哪些?
程序员必须掌握的大数据分析核心技术有哪些?大数据分析技术现是一种传统的技术分析模型,主要对数据进行筛选、过滤之后进行分析。随着银行业、保险业,电子商务的不断发展,非结构数据的数量越来越多,增加了大数据分析的难度,对于大数据方面的程序员要求越来越高。
7534
2020-03-05 15:19:17
大数据和人工智能有什么关系?
大数据和人工智能关注点不同,但有密切联系。人工智能需要大量的数据作为思考和决策的基础;大数据需要人工智能技术进行数据价值化操作。在大数据价值的两个主要体现当中,数据应用主要渠道之一就是人工智能产品,为智能体提供的数据量越大,智能体运行的效果就会越好,智能体通常需要大量的数据进行训练和验证,保障运行可靠性和稳定性。
18607
2020-04-27 15:44:25
什么叫大数据时代?它有哪些特点?
随着互联网技术和信息技术的发展,大数据在金融、资讯、娱乐、电商等等行业被广泛地应用,因此毫不夸张地说,我们已经全面迎来了一个大数据的时代。虽然我们常常提起大数据,但其实对于大数据时代的理解还仍旧比较浅显。本文将从大数据时代的特点、海量的数据处理以及面对的挑战,来和大家好好聊聊大数据时代。
11318
2020-06-02 15:07:21
