Запрос куста, чтобы быстро найти размер таблицы (количество строк)
Есть ли запрос на улов, чтобы быстро найти размер таблицы (т.е. количество строк) без запуска трудоемкой работы MapReduce? (Вот почему я хочу избежать COUNT(*)
.)
Я попробовал DESCRIBE EXTENDED
, но это дало numRows=0
, что, очевидно, неверно.
(Извиняется за вопрос newb. Я пробовал Googling и искал документацию apache.org без успеха.)
Ответы
Ответ 1
tblproperties предоставит размер таблицы и может быть использован для захвата только этого значения, если это необходимо.
-- gives all properties
show tblproperties yourTableName
-- show just the raw data size
show tblproperties yourTableName("rawDataSize")
Ответ 2
Вот краткая команда
ANALYZE TABLE tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)] COMPUTE STATISTICS [noscan];
Например, если таблица секционирована
hive> ANALYZE TABLE ops_bc_log PARTITION(day) COMPUTE STATISTICS noscan;
вывод
Статистика раздела logdata.ops_bc_log {day = 20140523}: [numFiles = 37, numRows = 26095186, totalSize = 654249957, rawDataSize = 58080809507]
Partition logdata.ops_bc_log {day = 20140521} stats: [numFiles = 30, numRows = 21363807, totalSize = 564014889, rawDataSize = 47556570705]
Статистика раздела logdata.ops_bc_log {day = 20140524}: [numFiles = 35, numRows = 25210367, totalSize = 631424507, rawDataSize = 56083164109]
Статистика раздела logdata.ops_bc_log {day = 20140522}: [numFiles = 37, numRows = 26295075, totalSize = 657113440, rawDataSize = 58496087068]
OK
Время: 5.252 секунды
Ответ 3
Как насчет использования:
hdfs dfs -du -s -h /path/to/table/name
Ответ 4
Использовать формат паркета для хранения данных вашей внешней/внутренней таблицы. Затем вы получите более быстрые результаты.
Ответ 5
его хороший вопрос. count() займет много времени для нахождения результата. Но, к сожалению, count() - это единственный способ сделать.
существует альтернативный способ (не сказать альтернативную, но лучшую задержку, чем выше):
задайте свойство
установить hive.exec.mode.local.auto = true;
и запустите ту же команду (выберите count (*) из tbl), которая дает лучшую задержку, чем предыдущая.