Impala生成执行计划过程:
(摘自论文:Impala: A Modern, Open-Source SQL Engine for Hadoop)
Impala可执行查询计划分两个阶段构建:(1)单节点计划和(2)计划并行化和碎片化。
1)在第一阶段,解析树被转换为不可执行的单节点计划树,由以下计划节点组成:HDFS/HBase扫描、哈希连接、交叉连接、并集、哈希聚合、排序、top-n和分析评估。这一步负责在尽可能低的计划节点分配谓词,根据等价类推断谓词,修剪表分区,设置限制/偏移,应用列投影,以及执行一些基于成本的操作。
2)第二个计划阶段将单节点计划作为输入,并生成分布式执行计划。总体目标是最大限度地减少数据移动并最大限度地提高扫描位置:在HDFS中,远程读取比本地读取慢得多。根据需要,通过在计划节点之间添加交换节点,并通过添加额外的非交换计划节点来最大限度地减少网络中的数据移动(例如,本地聚合节点),从而使计划变得分布式。在第二阶段,我们决定每个连接节点的连接策略(此时连接顺序是固定的)。支持的联接策略是广播和分区的。前者将连接的整个构建端复制到执行探测的所有集群机器,而后者在连接表达式上重新分发构建端和探测端。Impala选择任何一种估计的策略,以最大限度地减少网络上交换的数据量,同时利用连接输入的现有数据分区。
图中举例说明了查询规划的两个阶段。图的左侧显示了连接两个HDFS表(
07-23
2969
04-03
04-02
1028
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交