2013-08-29 5 views
5

Синтаксис я вижу для вычисления статистики в улей, кажется, указывает ответ на вопрос название будет «нет»:Любой способ вычислить статистику по таблице улов для всех разделов с помощью одной команды анализа?

ANALYZE TABLE [TABLENAME] PARTITION(parcol1=…, partcol2=….) COMPUTE STATISTICS 

Однако, я хотел бросить его здесь, так как я удивительно, что это было всегда требуется написать сценарий для итерации по разделам для создания операторов для каждого раздела. Сейчас у нас около тысячи разделов на этом маленьком столе, и он будет расти на порядки.

КСТАТИ Я попытался следующие без указания раздела:

hive> analyze table metrics compute statistics; 
FAILED: SemanticException [Error 10115]: Table is partitioned and partition specification is needed 

ответ

3

Да, ты можешь.

По крайней мере, из улья v0.13, на котором я нахожусь. Просто попробуйте раздел спецификации синтаксиса без конкретных значений (без =… бит)

Если вы используете для столбцов, то вы не можете из-за ошибки: https://issues.apache.org/jira/browse/HIVE-4861

+0

ОК, я написал выше, когда улей 11 был последним/самым большим. Полезно знать, улучшилось ли в 13 – javadba

+0

, кто бы ни опустил - порядочность и хотя бы оставить отзыв ... – msciwoj

+0

Можете ли вы показать образец? –

0

Согласно улей инструкции, если вы не зададите разделов спецификации сбор статистики для всей таблицы, https://cwiki.apache.org/confluence/display/Hive/StatsDev

When the user issues that command, he may or may not specify the partition specs. If the user doesn't specify any partition specs, statistics are gathered for the table as well as all the partitions (if any). 
+0

спасибо, я пытался что обновили вопрос – javadba

+0

Да, я понимаю, что, но есть и этот комментарий в этом же разделе: «при вычислении статистики по всем разделам, столбцы раздела все еще должны быть перечислены «. Поэтому я хотел бы предложить включить partition_columns (но без = vals). – pmhargis

1

Я на последней Hive 1,2 и следующая команда работ очень тонкие

hive> analyze table member partition(day) compute statistics noscan; 
Partition mobi_mysql.member{day=20150831} stats: [numFiles=7, numRows=-1, totalSize=4735943322, rawDataSize=-1] 
Partition mobi_mysql.member{day=20150901} stats: [numFiles=7, numRows=117512, totalSize=19741804, rawDataSize=0] 
Partition mobi_mysql.member{day=20150902} stats: [numFiles=7, numRows=-1, totalSize=17734601, rawDataSize=-1] 
Partition mobi_mysql.member{day=20150903} stats: [numFiles=7, numRows=-1, totalSize=13091084, rawDataSize=-1] 
OK 
Time taken: 2.089 seconds 
+0

Что означает значение totalSize? – paolov

+0

@ user55570 Это толевый размер файлов в этом разделе. Вы можете проверить его с помощью hadoop fs -ls $ {path_to_partition}. Он находится в байтах. numRows вводит в заблуждение или может быть ошибкой в ​​этой утилите – minhas23

+0

Спасибо. Я думал, что это должно быть отражено как rawDataSize. Если это то, что означает totalSize, то каково должно быть rawDataSize? – paolov

 Смежные вопросы

  • Нет связанных вопросов^_^