赞
踩
一、Catalyst 概述
select
*
from
table1
inner join
table2
on table1.id = table2.id
where
table1.age > 20
and table2.cid = 1
上面的语句会自动优化为如下所示:
select * from ( select * from table1 where table1.age > 20 ) a inner join ( select * from table2 where table2.cid = 1 ) b on a.id = b.id
即在资产许那阶段就提前将数据进行过滤,后续的join和shuffle数据量会大大减少。
select a.name ,a.age ,b.cid from ( select * from table1 where table1.age > 20 ) a inner join ( select * from table2 where table2.cid = 1 ) b on a.id = b.id
上面的语句会自动优化如下图所示:
select a.name ,a.age ,b.cid from ( select name ,age from table1 where table1.age > 20 ) a inner join ( select cid from table2 where table2.cid = 1 ) b on a.id = b.id
就是提前将需要的列查询出来,其他不需要的列裁剪掉。
select
1 + 1 id
from
table1
上面的语句会自动优化如下图所示:
select
2 id
from
table1
就是会提前将1 + 1计算成2,再赋给id列的每行,不用每次都计算一次1+1
4. SparkPlanner模块:
以上是一个关于 Spark SQL 优化器 Catalyst 的学习文档,希望对你有所帮助。如果你有任何问题或建议,请随时与我交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。