




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SparkSQL简介目录/Contents01什么是SparkSQL02SparkSQL架构什么是SparkSQL01什么是SparkSQLSparkSQL是Spark用来处理结构化数据(结构化数据可以来自外部结构化数据源也可以通过RDD获取)的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。外部的结构化数据源包括JSON、Parquet(默认)、RMDBS、Hive等。当前SparkSQL使用Catalyst优化器来对SQL进行优化,从而得到更加高效的执行方案。并且可以将结果存储到外部系统。什么是SparkSQLSparkSQL的前身是Shark,Shark最初是美国加州大学伯克利分校的实验室开发的Spark生态系统的组件之一,它运行在Spark系统之上,Shark重用了Hive的工作机制,并直接继承了Hive的各个组件,Shark将SQL语句的转换从MapReduce作业替换成了Spark作业,虽然这样提高了计算效率,但由于Shark过于依赖Hive,因此在版本迭代时很难添加新的优化策略,从而限制了Spark的发展,在2014年,伯克利实验室停止了对Shark的维护,转向SparkSQL的开发。SparkSQL主要提供了以下3个功能。什么是SparkSQL(1)SparkSQL可以从各种结构化数据源(如JSON、Hive、Parquet等)中读取数据,进行数据分析。(2)SparkSQL包含行业标准的JDBC和ODBC连接方式,因此它不局限于在Spark程序内使用SQL语句进行查询。(3)SparkSQL可以无缝地将SQL查询与Spark程序进行结合,它能够将结构化数据作为Spark中的分布式数据集(RDD)进行查询,在Python、Scala和Java中均集成了相关API,这种紧密的集成方式能够轻松地运行SQL查询以及复杂的分析算法。
SparkSQL架构02SparkSQL架构SparkSQL架构与Hive架构相比除了把底层的MapReduce执行引擎更改为Spark还修改了Catalyst优化器,SparkSQL快速的计算效率得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给SparkSQL的Catalyst优化器进行负责和管理。SparkSQL快速的计算效益得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给SparkSQL的Catalyst优化器负责和管理。如图7-1所示为SparkSQL整体架构。SparkSQL架构Catalyst优化器是一个新的可扩展的查询优化器,它是基于Scala函数式编程结构,SparkSQL开发工程师设计可扩展架构主要是为了在今后的版本迭代时,能够轻松地添加新的优化技术和功能,尤其是为了解决大数据生产环境中遇到的问题(例如,针对半结构化数据和高级数据分析),另外,Spark作为开源项目,外部开发人员可以针对项目需求自行扩展Catalyst优化器的功能。SparkSQL架构Catalyst主要的实现组件介绍如下。1、sqlParse:完成sql语句的语法解析功能,目前只提供了一个简单的sql解析器;2、Analyzer:主要完成绑定工作,将不同来源的UnresolvedLogicalPlan和数据元数据(如hivemetastore、Schemacatalog)进行绑定,生成resolvedLogicalPlan;3、Optimizer:对resolvedLogicalPlan进行优化,生成optimizedLogicalPlan;4、Planner:将LogicalPlan转换成PhysicalPlan;5、CostModel:主要根据过去的性能统计数据,选择最佳的物理执行计划Spark作为开源项目,外部开发人员可以针对项目需求自行扩展Catalyst优化器的功能。如图7-2所示为SparkSQL的运行架构。SparkSQL架构如上图所示,SparkSQL的工作流程可以分为如下几步:(1)使用SessionCatalog保存元数据在解析SQL语句之前,会创建SparkSession,或者如果是2.0之前的版本初始化SQLContext,SparkSession只是封装了SparkContext和SQLContext的创建而已。会把元数据保存在SessionCatalog中,涉及到表名,字段名称和字段类型。创建临时表或者视图,其实就会往SessionCatalog注册。(2)解析SQL使用ANTLR生成未绑定的逻辑计划当调用SparkSession的SQL或者SQLContext的SQL方法,我们以2.0为准,就会使用SparkSqlParser进行解析SQL。使用的ANTLR进行词法解析和语法解析。它分为2个步骤来生成UnresolvedLogicalPlan:词法分析:LexicalAnalysis,负责将token分组成符号类。构建一个分析树或者语法树AST。(3)使用分析器Analyzer绑定逻辑计划在该阶段,Analyzer会使用AnalyzerRules,并结合SessionCatalog,对未绑定的逻辑计划进行解析,生成已绑定的逻辑计划。SparkSQL架构(4)使用优化器Optimizer优化逻辑计划优化器也是会定义一套Rules,利用这些Rule对逻辑计划和Exepression进行迭代处理,从而使得树的节点进行合并和优化。(5)使用SparkPlanner生成物理计划SparkSpanner使用PlanningStrategies,对优化后的逻辑计划进行转换,生成可以执行的物理计划SparkPlan.(6)使用QueryExecution执行物理计划此时调用SparkPlan的execute方法,底层其实已经再触发job了,然后返回RDD。感谢大家的聆听DataFrames目录/Contents01DataFrames创建02操作DataFrames03RDD转换为DataFramesDataFrames创建01DataFrames创建在Spark2.0版本之前,SparkSQL中的SQLContext是创建DataFrame和执行SQL的入口,可以利用HiveContext接口,通过HiveQL语句操作Hive表数据,实现数据查询功能。从Spark2.0版本以上开始,Spark使用全新的SparkSession接口替代SQLContext及HiveContext接口来实现对其数据加载、转换、处理等功能。DataFrames创建1.数据准备2.通过文件创建DataFrame3.RDD转换为DataFrame操作DataFrames02操作DataFramesDataFrame提供了两种语法风格,即DSL风格语法和SQL风格语法,两者在功能上并无区别,仅仅是根据用户习惯,自定义选择操作方式。DSL风格2.SQL风格RDD转换为DataFrames03RDD转换为DataFramesSparkSQL支持两种不同的方式转换已经存在的RDD到DataFrame。第一种方式,是使用反射来推断包含了特定数据类型的RDD的元数据。这种基于反射的方式,代码比较简洁,当你已经知道你的RDD的元数据时,是一种非常不错的方式。这个方式简单,但是不建议使用,因为在工作当中,使用这种方式是有限制的。感谢大家的聆听SparkSQL多数据源操作目录/Contents01
MySQL数据源操作02Hive数据源操作MySQL数据源操作01MySQL数据源操作SparkSQL可以通过JDBC从关系数据库中读取数据创建DataFrame,通过对DataFrame进行一系列操作后,还可以将数据重新写入关系数据库中,当使用JDBC访问其它数据库时,应该首选JDBCRDD。这是因为结果是以数据框(DataFrame)返回的,且这样SparkSQL操作轻松或便于连接其它数据源。MySQL数据源操作1.读取MySQL数据库通过navicat或者SQLyog工具远程连接master节点的MySQL服务,利用可视化界面创建名为spark_sql的数据库,并创建person表,向表中添加数据。2.向MySQL中写入数据SparkSQL不仅可以查询MySQL中的数据,还可以将数据写入MySQL中。Hive数据源操作02Hive数据源操作1.环境准备Hive采用MySQL数据库存放Hive元数据,为了能够让Spark访问Hive,需要将MySQL驱动包复制到Spark安装路径下的jars目录下。2.创建数据库与表配置完成后启动hive创建对应的数据库与表。SparkSQL支持对Hive中存储的数据进行读写。下面介绍通过SparkSQL操作Hive数据仓库的具体步骤。Hive数据源操作3.SparkSQL操作Hive数据库执行Spark-Shell,首先进入sparksql数据库,查看当前数据仓库中是否有person表。4.向表中插入数据在插入数据之前先查看表中的数据。感谢大家的聆听SparkSQL应用案例目录/Contents01SparkSQL实现单词统计02电影数据分析SparkSQL实现单词统计01SparkSQL实现单词统计(1)实验内容本实验主要介绍在IDEA中开发SparkSQL案例-WordCount,以SQL和DSL两种方式实现。(2)实验目的熟悉SparkSQL的SQL和DSL的使用方法和区别(3)实验步骤步骤1SQL方式实现WordCount步骤2DSL方式实现WordCount(4)步骤1SQL方式实现WordCo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司终止协议合同标准文本
- 2025建筑施工土方开挖合同示范文本
- 凉茶店加盟合同样本
- 2025年商业店面租赁合同样本参考模板
- 创建咖啡品牌的品牌形象规划计划
- 买卖合同样本水果订购合同
- 中国黄金采购合同样本
- led购买合同标准文本
- 不可撤销釆购合同样本
- 专本套读合同样本
- 湖北省咸宁市2025年高考数学试题全真模拟卷
- 2025山东潍坊市天成水利建设有限公司招聘30人查看职位笔试参考题库附带答案详解
- 弱电工程施工项目管理流程
- 宁夏中考试题历史及答案
- 2024-2025学年二年级语文下册统编版第四单元达标卷(单元测试)(含答案)
- 2025年高考英语二轮复习专题01 阅读理解之细节理解题(课件)(新高考)
- 河南郑州大学第二附属医院招聘考试真题2024
- 《中国古代寓言》导读(课件)2023-2024学年统编版语文三年级下册
- 车站主体结构模板支架专项施工方案--终稿(专家意见修改的)-副本
- 景观环境与行为特征
- 小学美术国测(国家义务教育质量监测)复习内容
评论
0/150
提交评论