2013-12-16 1 views
2

Я ищу способ подсчета количества столбцов в таблице в Hive.Количество кол-во столбцов в улье

Я знаю, что следующий код работает в Microsoft SQL Server. Есть ли эквивалент улья?

SELECT COUNT(*), 
    FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_CATALOG = 'database_name' 
    AND TABLE_SCHEMA = 'schema_name' 
    AND TABLE_NAME = 'table_name' 

ответ

6

попробовать это

SHOW COLUMNS (ОТ | IN) table_name [(С | В) db_name]

+0

В конце команды SHOW COLUMNS отображается количество возвращенных строк, что указывает количество столбцов, поэтому этот ответ верен. –

+0

Даже «Описать db_name.table_name;» даст счет таким же образом. – Srekk

0

вы должны проверить, если ваш HIVE включает улью 287, потому что для версий энцефалопатии, которые не включают в себя улью 287, вам нужно использовать COUNT (1) вместо COUNT (*).

+0

Спасибо за ваш ответ! Вы говорите, что столбцы подсчитываются с помощью COUNT (1) в Hive? Какова будет остальная часть кода? Вышеприведенный код не работает. –

+0

Я говорю, что вам нужно использовать COUNT (1), если ваша версия HIVE не включает HIVE-287. Затем вы должны загрузить этот патч с https://issues.apache.org/jira/browse/HIVE-287. , если вы не хотите загружать патч или у вас есть HIVE-287, и код не работает, используйте что-то вроде этого: SELECT col1, col2, count (1) FROM table GROUP BY col1, col2 – user3095691

+0

Спасибо за уточнение, но ваши предложения выводят количество строк в моей таблице. Я пытаюсь найти количество столбцов. –

2

Попробуйте это, он покажет вам столбцы вашей таблицы:

DESCRIBE schemaName.tableName; 
0

Я не знаю, как правильно подсчитывать столбцы, однако я решил проблему для своих нужд косвенно через:

echo 'table1name:, '`hive -e 'describe schemaname.table1name;' | grep -v 'col_name' | wc -l > num_columns.csv 
echo 'table2name:, '`hive -e 'describe schemaname.table2name;' | grep -v 'col_name' | wc -l >> num_columns.csv 
... 

(Мне нужен бит grep -v, потому что у меня есть заголовки по умолчанию; без него вы получите слишком много строк, подсчитанных на этапе wc -l.)

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