Это ожидаемое поведение от Hive.
в улье, если вы выполните простой запрос, такой как select * from table
, не будет выполнено задание по уменьшению карты, поскольку мы просто сбрасываем данные из HDFS.
Hive# select * from foo;
+---------+-----------+----------+--+
| foo.id | foo.name | foo.age |
+---------+-----------+----------+--+
| 1 | a | 10 |
| 2 | a | 10 |
| 3 | b | 10 |
| 4 | c | 20 |
+---------+-----------+----------+--+
4 rows selected (0.116 seconds)
Когда вы выполняете агрегации , тогда фаза reducer
будет выполняться вместе с фазой map
.
Hive# select count(*) from table group by name;
INFO : Map 1: 0/1 Reducer 2: 0/2
INFO : Map 1: 0(+1)/1 Reducer 2: 0/2
INFO : Map 1: 0(+1)/1 Reducer 2: 0/2
INFO : Map 1: 0(+1)/1 Reducer 2: 0/2
INFO : Map 1: 0(+1)/1 Reducer 2: 0/2
INFO : Map 1: 1/1 Reducer 2: 0/1
INFO : Map 1: 1/1 Reducer 2: 0(+1)/1
INFO : Map 1: 1/1 Reducer 2: 1/1
+------+--+
| _c0 |
+------+--+
| 2 |
| 1 |
| 1 |
+------+--+
3 rows selected (13.709 seconds)
Мы можем добавить еще одну фазу редукторак вышеуказанному запросу, добавив к нему порядок по пунктам
Hive# select count(*) cnt from foo group by name order by cnt;
INFO : Map 1: 0/1 Reducer 2: 0/2 Reducer 3: 0/1
INFO : Map 1: 0(+1)/1 Reducer 2: 0/2 Reducer 3: 0/1
INFO : Map 1: 1/1 Reducer 2: 0/1 Reducer 3: 0/1
INFO : Map 1: 1/1 Reducer 2: 0(+1)/1 Reducer 3: 0/1
INFO : Map 1: 1/1 Reducer 2: 1/1 Reducer 3: 0(+1)/1
INFO : Map 1: 1/1 Reducer 2: 1/1 Reducer 3: 1/1
+------+--+
| cnt |
+------+--+
| 1 |
| 1 |
| 2 |
+------+--+
Вы можете увидеть, что 2 этапа редуктора выполнены, потому что после агрегирования мы упорядочиваем результаты
Map1 phase:- Loads the data from HDFS.
Reduer2:- Will does aggregation
Reducer 3:- after aggregation it will order the results to ascending order.
, если вы объясните по вышеуказанному запросу
Hive# explain select count(*) cnt from foo group by name order by cnt;
Vertex dependency in root stage
Reducer 2 <- Map 1 (SIMPLE_EDGE)
Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
Обратитесь к этой ссылке, чтобы ознакомиться с тем, когда Hive использует Map / Reduce побочные задания.