Есть ли способ идентифицировать или обнаружить перекос данных в таблице улья.

У нас много запросов на улей, которые занимают много времени. мы используем 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

Другие вопросы по тегам