Spark SQL解析过程

博客详细介绍了Spark SQL如何将SQL和DataFrame解析成逻辑执行计划,并从Hive Metastore获取元数据。经过优化器的应用,如谓词下推,生成物理执行计划。优化过程包括将UNresolveRelation绑定为CatalogRelation,以及根据表大小选择合适的Join策略,如MapJoin或SortMergeJoin。

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

黄色的是数据结构,蓝色的spark的模块,绿色的是hive matestore 。

SQL和DataFrame 进来会先解析成逻辑执行计划,从hive metasotre里面拿一些表、字段的元数据信息,生成一个解析过的执行计划。经过spark的优化器,改变逻辑执行计划的逻辑结构,通过planner生成物理的执行计划。

将sql转换成抽象语法书(逻辑执行计划)

右边的含义:relation就是一个表的意思,UNresolveRelation是指还没有解析过,现在还没有从元数据那获取信息,不知道表里具体的情况;再往上是有一个left join,join的key值是id;经过join之后是Filter,是where里面的条件;然后是Project,叫做投影,是select里面选的字段。

Analyze是查询hive metastore,绑定元数据,拿一些table的信息、列的信息等,如果这个是一个view(视图),就会展开视图的逻辑,做进一步的解析。红色部分为发生的变化。

经过绑定元数据之后,UNresolveRelation变成了CatalogRelation,CatalogRelation代表的是hive表的意思,会绑定字段的类型,如果查一个不存在的字段或者表,就会在这一步报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值