配置单元SQL语句执行顺序

sql语句在Hive中的执行顺序如下:

从..在哪里..加入..在..挑选..分组依据..挑选..拥有..明显的..以...排序..限制..联合/联合所有

让我们通过一条sql语句来分析一下:

上面的sql语句可以成功执行。让我们来看看它在MR:

地图阶段:

减少阶段:

上面的执行顺序是否正确,可以通过explain执行计划看出来。内容太多了,我们分阶段来看。

我们看到Stage-5是根,即Stage-5先执行,Stage-2依赖Stage-5,Stage-0依赖Stage-2。

图中标记①的地方是扫描工作台操作。注意先扫描的表B,也就是左join后面的表,再过滤(图中标记②)。在我们的sql语句中,对表A进行了过滤,但是Hive会自动以同样的方式对表B进行过滤,这样可以减少关联的数据量。

首先扫描A表(图中标记①);接下来,过滤操作idno >;112233’(图中标记②);然后进行左连接,关联的键是idno(图中标记③);执行关联操作后,将执行输出操作,输出为三个字段,包括两个select字段和一个group by字段(图中标记为④);然后进行group by操作,分组方式为hash(图中标记⑤);然后进行排序操作,根据idno(图中标为6)进行正向排序。

首先,通过操作进行分组。注意,此时的分组方式是mergepartial分组(图中标记①);然后选择。此时只有两个输出场,输出行数为30304(图中用②标出)。接下来执行必须过滤掉count _ user >的过滤操作;对于1的字段,输出的行数为10101(图中用③标注);然后限制输出行数(图中标有④);图中标有⑤的地方表示是否压缩文件,false表示不压缩。

将行数限制为10。

通过以上对SQL执行计划的分析,总结出以下几点: