count (*) в таблице Avro возвращает 0 - PullRequest
1 голос
/ 11 мая 2019

Я недавно перешел на использование AvroSerDe для моих внешних таблиц в Hive.

Select col_name,count(*)
from table
group by col_name;

Приведенный выше запрос дает мне счет. Где, как показано ниже, запрос:

Select count(*)
from table;

1 Ответ

1 голос
/ 11 мая 2019

Причина в том, что куст просто смотрит на метаданные таблицы и выбирает значения.По какой-то причине статистика для таблицы в улье не обновляется, из-за чего count (*) возвращает 0.

Статистика записывается без строк данных на момент создания таблицы и для любых данных добавляется / изменяется, hive требует обновить эту статистику в метаданных.

Запуск команды ANALYZE собирает статистику и записывает ее в Hive MetaStore.

ANALYZE TABLE table_name COMPUTE STATISTICS;

Посетите Apache Hivewiki для получения более подробной информации о команде ANALYZE.

Другие методы решения этой проблемы

  • Использование 'limit' и 'group by'предложение запускает карту сокращения заданий для получения количества строк и дает правильное значение

  • Установка преобразования задачи извлечения в ноль не заставляет куст запускать задание уменьшения карты для подсчета количества строк

    hive> set hive.fetch.task.conversion=none;

...