Spark用DataFrame取代RDD以提高性能???

Spark经历了从MR到RDD再到DataFrame的变革,DataFrame引入了Schema,提供更丰富的算子和优化。Catalyst优化器和Tungsten内存管理显著提高了性能,减少了75%的执行时间和内存使用。DataFrame的列式存储利于压缩和查询效率,使得其在大数据处理中展现出优于RDD的性能。
摘要由CSDN通过智能技术生成

SparkSQL 体系结构

SparkSQL体系结构如下图所示,整体由上到下分为三层:编程模型层、执行任务优化层以及任务执行引擎层,其中SparkSQL编程模型可以分为SQL和DataFrame两种;执行计划优化又称为Catalyst,该模块负责将SQL语句解析成AST(逻辑执行计划),并对原始逻辑执行计划进行优化,优化规则分为基于规则的优化策略和基于代价的优化策略两种,最终输出优化后的物理执行计划;任务执行引擎就是Spark内核,负责根据物理执行计划生成DAG,在任务调度系统的管理下分解为任务集并分发到集群节点上加载数据运行,Tungsten基于对内存和CPU的性能优化,使得Spark能够更好地利用当前硬件条件提升性能
在这里插入图片描述

SparkSQL 编程模型 - DataFrame

说到计算模型,批处理计算从最初提出一直到现在,一共经历了两次大的变革,第一次变革是从MR编程模式到RDD编程模型,第二次则是从RDD编程模式进化到DataFrame模式。

第一次变革:MR编程模型 -> DAG编程模型

和MR计算模型相比,DAG计算模型有很多改进:

  1. 可以支持更多的算子,比如filter算子、sum算子等,不再像MR只支持map和reduce两种

  2. 更加灵活的存储机制,RDD可以支持本地硬盘存储、缓存存储以及混合存储三种模式,用户可以进行选择。而MR目前只支持HDFS存储一种模式。很显然,HDFS存储需要将中间数据存储三份,而RDD则不需要,这是DAG编程模型效率高的一个重要原因之一。

  3. DAG模型带来了更细粒度的任务并发,不再像MR那样每次起个任务就要起个JVM进程,重死了;另外,DAG模型带来了另一个利好是很好的容错性,一个任务即使中间断掉了,也不需要从头再来一次。

  4. 延迟计算机制一方面可以使得同一个stage内的操作可以合并到一起落在一块数据上,而不再是所有数据先执行a操作、再扫描一遍执行b操作,太浪费时间。另一方面给执行路径优化留下了可能性,随便你怎么优化…

所有这些改进使得DAG编程模型相比MR编程模型,性能可以有10ÿ

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrZhangBaby

请博主喝杯奶茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值