Hive 的执行原理是高频面试题。因为后面的调优或者数据倾斜的处理都是在对其执行原理清楚的基础上进行的。今天以 GROUP BY
为例讲解一下。
1.直观的角度
下表名叫 table1:
id | name | number |
---|---|---|
1 | aaa | 2 |
2 | aaa | 3 |
3 | bbb | 4 |
4 | bbb | 5 |
5 | ccc | 6 |
6 | ddd | 7 |
7 | eee | 7 |
8 | bbb | 5 |
9 | ccc | 6 |
如果执行下面的语句:
SELECT name
FROM table1
GROUP BY name;
容易得到结果:
name |
---|
aaa |
bbb |
ccc |
ddd |
eee |
那么到底怎么执行的呢?我们先拆解一下这个过程。SQL 的执行顺序如下:
- FROM JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT(窗口函数在这里执行)
- ORDER BY
- LIMIT
于是可以得到:
第一步,先执行 FROM table1
,得到的还是原来的表:
id | name | n |
---|