Spark-Sql源码解析:从SQL语句到RDD模型的转换原理
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
Spark-Sql源码解析 Spark-Sql源码解析是Spark-Sql框架的核心组件之一,它负责将SQL语句转换为可执行的RDD模型。本文将详细介绍Spark-Sql的原理,从SQL语句如何转换为逻辑计划,然后是物理计划,最后是RDD。 首先,我们可以通过一个简单的示例来了解Spark-Sql的工作流程。假设我们执行一个简单的SQL语句,例如`result.count()`,它将触发客户端提交Job进行计算。在Spark-Sql中,这个过程可以分为以下几个步骤: 1. SQL语句解析:Spark-Sql将SQL语句解析成语法树。 2. 逻辑计划生成:Spark-Sql将语法树转换为逻辑计划。 3. 物理计划生成:Spark-Sql将逻辑计划转换为物理计划。 4. RDD生成:Spark-Sql将物理计划转换为可执行的RDD模型。 在了解Spark-Sql的工作流程后,我们可以进一步了解Spark-Sql中的主要类成员。 ### 1.2 SQLContext SQLContext是Spark-Sql中的上下文环境,它保存了QueryExecution中所需要的几个类。SQLContext是Spark-Sql的核心组件之一,它负责管理SQL语句的执行。 ### 1.2.1 Catalog Catalog是一个存储<tableName, logicalPlan>的map结构,用于查找关系的目录、注册表、注销表、查询表和逻辑计划关系的类。Catalog是Spark-Sql中的核心组件之一,它负责管理表的元数据。 ### 1.2.2 SparkSQLParser SparkSQLParser是Spark-Sql中的语法分析器,将Sql语句解析成语法树,然后返回一个LogicalPlan。它首先拆分不同的SQL(将其分类),然后利用fallback解析。 ### 1.2.3 Analyzer Analyzer是Spark-Sql中的语法分析器,Analyzer会使用Catalog和FunctionRegistry将UnresolvedAttribute和UnresolvedRelation转换为catalyst里全类型的对象。例如,将`UnresolvedRelation[test],None`转化为`Relation[id#0L,dev_id#1,dev_chnnum#2L,dev_name#3,dev_chnname#4,car_num#5,car_numtype#6,car_numcolor#7,car_speed#8,car_type#9,car_color#10,car_length#11L,car_direct#12,car_way_code#13,cap_time#14L,cap_date#15L,inf_note#16,max_speed#17,min_speed#18,car_img_url#19,car_img1_url#20,car_img2_url#21,car_img3_url#22,car_img4_url#23,car_img5_url#24,rec_stat#25,dev_chnid#26,car_img_count#27,save_flag#28,dc_cleanflag#29,pic_id#30,car_img_plate_top#31L,car_img_p` Spark-Sql源码解析是Spark-Sql框架的核心组件之一,它负责将SQL语句转换为可执行的RDD模型。通过了解Spark-Sql的工作流程和主要类成员,我们可以更好地理解Spark-Sql的原理和实现机理。
![](https://csdnimg.cn/release/download_crawler_static/9609235/bgb.jpg)
![](https://csdnimg.cn/release/download_crawler_static/9609235/bgc.jpg)
![](https://csdnimg.cn/release/download_crawler_static/9609235/bgd.jpg)
剩余63页未读,继续阅读
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)