1、SparkSQL模块介绍

1.SparkSQL是Spark的四大组件之一,也是在Spark数据处理中用得最多的组件。SparkSQL在SparkCore的基础上对外提供了SQL接口,可以让熟悉SQL的技术人员快速上手。其编程接口为SparkSession。


2.SparkSQL所有的内容位于pyspark.sql这个模块下,包含了SparkSession、Column、Row等众多的核心内容。SparkSQL是面向结构化数据的利刃,处理表格如常规的关系型数据库一样,不管是提供的丰富的API还是执行的效率上,都有很大的优势。当然对于非结构化的数据,还得借助RDD来进行基本的处理。


3.SparkSQL中的DataFrame是一个类似于Pandas中的DataFrame的表格对象,其底层基于RDD,但是他在RDD的基础上提供了表格的例如column,row,索引等信息,因此使用基于DataFrame的API编写出的Spark程序在性能上要优于基于RDD编写出来的程序。还有一个大的优势是,迎合了很多本来就会SQL的程序员的胃口,使他们非常容易上手使用。


4.SparkSQL这个模块之前是使用的基于Hive的SQL解析器,不利于优化,随着项目的发展,Spark团队逐渐抛弃了Hive解析器,开发Spark特有的SQL解析器,使得SparkSQL在灵活性和速度上再上一层楼。在SparkSession的builder上有一个方法叫enableHiveSupport,用于启动对Hive的查询的支持。因此在使用SparkSQL的过程中,可以天然无缝的查询Hive数据仓库中的数据。


5.SparkSQL底层使用了Catalyst优化器对SQL语句进行优化,同时底层使用了Tungsten这个项目的成果,Tungsten项目聚集于对CPU和Memory的优化,借助Catalyst和Tungsten,使得SparkSQL的执行速度进一步提升,按官方的说法,其速度为hadoop的100倍!

6.普通的RDD和DataFrame可以通过相关的方法进行互相转换,因此使得基于DataFrame的接口功能异常强大而灵活。SparkSQL也提供了用户自定义函数的支持,非常方便的实现自定义的功能,在SQL中使用起来非常方便。


7.SparkSQL可以读取几乎所有格式的文件,形成DataFrame,经过业务处理之后,可以非常方便的通过write接口将结果写到文件、关系型数据库、非关系型数据库。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值