у меня две таблицы
- Внешняя таблица А
- Внешняя таблица B с секционированными и сегментированными столбцами
Таблица A имеет 5 столбцов (скажем, c1,c2,c3,c4,c5)
Таблица B имеет 5 столбцов (c1,c2,c3,c4, разделенных на c5 и разделенных на c1.
Я запускаю следующие запросы
1. select * from A where c5="x" and c1="y"
2. select c1,c2,c3 from A where c5="x" and c1="y"
3. select * from B where c5="x" and c1="y"
4. select c1,c2,c3 from B where c5="x" and c1="y"
Все они используют не MR
, а только оператор выборки.
Q1: MR
или Fetch. Зависит ли это от размера файла или всегда одно и то же?
Q2: поведение 2-го и 4-го запросов противоречит ссылка. Это недавнее улучшение?
5. select count(*) from A where c5="x" and c1="y"
6. select count(*) from B where c5="x" and c1="y"
Q3: Очевидно, что для этих 2 требуется MR
, но 5 в два раза быстрее, чем 6. В идеале 6 должно быть быстрее, поскольку таблица B разделена на сегменты и сегментирована, а запрос основан на этих столбцах. Какие могут быть возможные причины? Я запускал запросы несколько раз.
Примечание. Я использую HDP 2.3.