Я работаю над тестом, в котором я должен узнать количество разделов таблицы и проверить, правильно ли это. Если я использую show partitions TableName
, я получаю все разделы по имени, но я хочу получить количество разделов, например, что-то вроде строк show count(partitions) TableName
(который перенастраивает OK, так что это не хорошо) и получите 12 (например,).
Есть ли способ достичь этого?Можно ли подсчитать количество разделов?
3
A
ответ
3
Вы могли бы использовать:
select count(distinct <partition key>) from <TableName>;
-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 рассказывает улей, чтобы выполнить запрос, цитируемый снабжать струной, тетивой и т.п.
Я попытался это, но с нет результата: (( – diazazar
работает так, я получаю вывод. –
С помощью этой команды куст будет идти по всем строкам, найти отдельный/уникальный ключ раздела и, наконец, подсчитать их. Как вы можете себе представить, это может быть очень медленным. Было бы быстрее посчитать это из «show partitions»; но я не нашел способ сделать это. –
rafaelvalle