Есть ли способ идентифицировать или обнаружить перекос данных в таблице улья.
У нас много запросов на улей, которые занимают много времени. мы используем tez и другие передовые практики, такие как CBO, файлы orc и т. д.
Есть ли способ проверить / проанализировать перекос данных, как некоторые команды. Может объяснить план помощи и, если да, какой параметр мне искать.
заранее спасибо.
1 ответ
Объяснить план не поможет в этом, вы должны проверить данные. Если это соединение, выберите значение 100 лучших ключей соединения из всех таблиц, участвующих в объединении, сделайте то же самое для разделения по ключу, если это аналитическая функция, и вы увидите, является ли это перекосом.
Пример:
select key, count(*) cnt
from table
group by key
having count(*)> 1000 --check also >1 for tables where it should not be duplication (like dimentions)
order by cnt desc limit 100;
key
может быть сложным ключом соединения (все столбцы, которые вы используете в условии соединения ON).
Также взгляните на этот ответ: /questions/6372714/pochemu-poslednij-shag-umensheniya-chrezvyichajno-medlennyij-v-etom-mapreduce-hiveql-hdfs-mapreduce/6372732#6372732