千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  IT问答库  >  大数据基础知识

大数据之Spark框架中RDD和DataFrame的区别

发布:大数据 2022-02-24 17:50

大数据之Spark框架中RDD和DataFrame的区别

推荐答案

  大数据覆盖的技术点有很多,其中spark框架就是其中一种,本期小编为大家介绍的大数据培训教程就是关于Spark框架中RDD和DataFrame的区别是什么?RDD(提供了一种高度受限的共享内存模型;DataFrame是一种分布式的数据集,并且以列的方式组合的。在spark中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对象的姓名、年龄等。

1

  DataFrame也是弹性分布式数据集,但是本质上是一个分布式数据表,因此称为分布式表更准确。DataFrame每个元素不是泛型对象,而是Row对象。

  DataFrame的缺点是Spark SQL DataFrame API 不支持编译时类型安全,因此,如果结构未知,则不能操作数据;同时,一旦将域对象转换为Data frame ,则域对象不能重构。

  DataFrame=RDD-【泛型】+schema+方便的SQL操作+【catalyst】优化

  DataFrame本质上是一个【分布式数据表】

2

  DataFrame优于RDD,因为它提供了内存管理和优化的执行计划。总结为以下两点:

  a.自定义内存管理:当数据以二进制格式存储在堆外内存时,会节省大量内存。除此之外,没有垃圾回收(GC)开销。还避免了昂贵的Java序列化。因为数据是以二进制格式存储的,并且内存的schema是已知的。

  b.优化执行计划:这也称为查询优化器。可以为查询的执行创建一个优化的执行计划。优化执行计划完成后最终将在RDD上运行执行。

  如果您想了解更多关于千锋教育或者大数据培训教程,可以咨询我们的客服小姐姐,他们会为您做详细的解答。

最新问答资讯

01 unity用什么编程语言?unity学习难度大吗

学习 unity 语言
6020 人关注

02 python容易学吗?学好python有什么好处?

学习 python 工作 培训
5389 人关注

03 html是什么语言?html学习难吗?

学习 html 语言 可以
5062 人关注

04 c语言难学吗?c语言学好要多久?

语言 技术 学习
4733 人关注

06 学好平面设计要多久?报速成班靠谱吗?

平面 设计 学习 时间
4238 人关注

相关问题

学大数据需要具备什么基础和知识点?

大数据时代,不仅带来了先进的技术,也带来了很多求职机会,很多...

大数据培训之数据分析思维

想要学会数据分析,那么就还要学会数据分析思维,数据思维具有框...

大数据都在哪些应用领域比较常见?

快速发展的时代,大数据围绕我们的日常生活方方面面,单单在疫情...

大数据培训分享:大数据分析的数据类型都有哪些

互联网时代,数据共享成了非常普遍的,各大企业对于同行业的数据...

大数据之Spark框架中RDD和DataFrame的区别

大数据覆盖的技术点有很多,其中spark框架就是其中一种,本期小...

大数据开发工程师是做什么的?

随着大数据在生活中应用变得广泛,大数据开发工程师也逐渐的出现...

测一测
你知道多少IT梗