SparkSQL 前讲篇(十三)

本文介绍了Spark SQL的发展历程,从HDFS到Hive,再到Shark的演变,最终形成Spark SQL。Spark SQL通过内存列存储、SQL支持和数据源优化提升性能,提供数据兼容性和组件扩展性。文章还探讨了RDD、DataFrame和Dataset之间的关系与转换,以及Spark SQL在性能优化方面的特色,如内存列存储和谓词下推。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark SQL概述

  新的开始,也是新的高度,结束了SparkCore,现在我站在巨人的肩上,总结一下Spark SQL。先说一下,在SparkSQL对于算子可能不会再从源码详细的说,因为SparkCore和SparkSQL在算子上有很多相同之处,原理也是大同小异,熟悉了SparkCore的算子,那么Spark SQL算子也是相差无几,我们主要是对特殊存在的算子以及特殊的数据结构进行介绍。那,我们开始了?

在这里插入图片描述

一、Spark SQL 发展。

  Spark SQL主要是将数据转换为结构化的数据,然后进行处理操作,spark的前身,也就是父辈是MapReduce,但是因为性能局限、使用场景,Spark揭竿而起,逐渐发展壮大。

1.1 HDFS -> Hive

  由于Hadoop在企业生产中的大量使用,HDFS上积累了大量数据,为了给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,Hive应运而生。Hive的原理是将SQL语句翻译成MapReduce计算。
在这里插入图片描述

1.2 Hive -> Shark

  但是,MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O,降低了运行效率,为了提供SQL-on-Hadoop的效率,Shark出现了。
在这里插入图片描述
  Shark是伯克利AMPLab实验室Spark生态环境的组件之一,它修改了Hive中的内存管理、物理计划和执行三个模块,使得SQL语句直接运行在Spark上,从而使得SQL查询的速度得到10-100倍的提升。
在这里插入图片描述

1.3 Shark-> Spark SQL

  2014年6月1日,Shark项目和SparkSQL项目的主持人Reynold Xin宣布:停止对Shark的开发,团队将所有资源放sparkSQL项目上,至此,Shark的发展画上了句话。Reynold在其微博上发出了下面这段话:
在这里插入图片描述
为什么Shark会死呢?Databricks在其官网上给出了答案

Shark built on the Hive codebase and achieved performance improvements by swapping out the physical execution engine part of Hive. While this approach enabled Shark users to speed up their Hive queries, Shark inherited a large, complicated code base from Hive that made it hard to optimize and maintain. As we moved to push the boundary of performance optimizations and integrating sophisticated analytics with SQL, we were constrained by the legacy that was designed for MapReduce.

随着Spark的发展,Shark对于Hive的太多依赖制约了Spark的One Stack rule them all的方针,制约了Spark各个组件的相互集成,同时Shark也无法利用Spark的特性进行深度优化,所以决定放弃Shark,提出了SparkSQL项目。
在这里插入图片描述
随着Shark的结束,两个新的项目应运而生:Sp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值