Я пытаюсь понять план запроса улья для простого запроса distinct
, и у меня возникла небольшая путаница при обновлении вывода одного из этапов.
У меня есть простая таблица с двумя столбцами, id и значением.и только 4 ряда, как указано ниже.
Данные:
hive> select * from temp.test_distinct;
OK
1 100
2 100
3 100
4 150
План
hive> explain select distinct value from temp.test_distinct;
OK
Plan not optimized by CBO.
Vertex dependency in root stage
Reducer 2 <- Map 1 (SIMPLE_EDGE)
Stage-0
Fetch Operator
limit:-1
Stage-1
Reducer 2
File Output Operator [FS_6]
compressed:false
Statistics:Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
table:{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat","serde:":"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"}
Group By Operator [GBY_4]
| keys:KEY._col0 (type: string)
| outputColumnNames:["_col0"]
| Statistics:Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
|<-Map 1 [SIMPLE_EDGE]
Reduce Output Operator [RS_3]
key expressions:_col0 (type: string)
Map-reduce partition columns:_col0 (type: string)
sort order:+
Statistics:Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
Group By Operator [GBY_2]
keys:value (type: string)
outputColumnNames:["_col0"]
Statistics:Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
Select Operator [SEL_1]
outputColumnNames:["value"]
Statistics:Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
TableScan [TS_0]
alias:test_distinct
Statistics:Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
Time taken: 0.181 seconds, Fetched: 35 row(s)
Путаница:
TableScan, Select Operator и Group By Operator показывает, что они обработали 4 строки , что имеет смысл для меня.Но не должен следующий этап после Оператор группировки по получать только 2 строки процесса.As group by удалит другие строки.
В моем DAG я вижу, что вывод картографа - только две строки, а не четыре, однако это не соответствует плану.
Могу ли я смотреть неправильно?