2014-02-18 2 views
3

Я работаю над тестом, в котором я должен узнать количество разделов таблицы и проверить, правильно ли это. Если я использую show partitions TableName, я получаю все разделы по имени, но я хочу получить количество разделов, например, что-то вроде строк show count(partitions) TableName (который перенастраивает OK, так что это не хорошо) и получите 12 (например,).
Есть ли способ достичь этого?Можно ли подсчитать количество разделов?

ответ

3

Вы могли бы использовать:

select count(distinct <partition key>) from <TableName>; 
+0

Я попытался это, но с нет результата: (( – diazazar

+0

работает так, я получаю вывод. –

+0

С помощью этой команды куст будет идти по всем строкам, найти отдельный/уникальный ключ раздела и, наконец, подсчитать их. Как вы можете себе представить, это может быть очень медленным. Было бы быстрее посчитать это из «show partitions» ; но я не нашел способ сделать это. – rafaelvalle

-2

Используйте следующий синтаксис:

show create table <table name>; 
0

Вы можете использовать интерфейс WebHCat, чтобы получить информацию, как это. Это имеет то преимущество, что вы можете запустить команду из любого места, где доступен сервер. В результате JSON - используйте обработчик JSON по вашему выбору для обработки результатов.

В этом примере выполнения результатов WebHCat для Python возвращается только число 24, представляющее количество разделов для этой таблицы. (Имя сервера - это узел имени).

curl -s 'http://*myservername*:50111/templeton/v1/ddl/database/*mydatabasename*/table/*mytablename*/partition?user.name=*myusername*' | python -c 'import sys, json; print len(json.load(sys.stdin)["partitions"])' 
24 
3

Использование Hive CLI

$ hive --silent -e "show partitions <dbName>.<tableName>;" | wc -l 

--silent является обеспечение бесшумного режима,

-e рассказывает улей, чтобы выполнить запрос, цитируемый снабжать струной, тетивой и т.п.