我正在寻找一种在Hive中计算表格列数的方法。
我知道下面的代码在Microsoft SQL Server中可行。是否有Hive等效的代码?
SELECT COUNT(*),
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'database_name'
AND TABLE_SCHEMA = 'schema_name'
AND TABLE_NAME = 'table_name'
我正在寻找一种在Hive中计算表格列数的方法。
我知道下面的代码在Microsoft SQL Server中可行。是否有Hive等效的代码?
SELECT COUNT(*),
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'database_name'
AND TABLE_SCHEMA = 'schema_name'
AND TABLE_NAME = 'table_name'
试试这个
SHOW COLUMNS (FROM|IN) table_name [(FROM|IN) db_name]
试试这个,它会显示您的表的列:
DESCRIBE schemaName.tableName;
我不知道直接计算列数的方法,但是我通过以下方式间接地解决了我的需求问题:
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
步骤中会多计算一行。
你需要检查你的HIVE是否包含HIVE-287,因为在不包含HIVE-287的HIVE版本中,你需要使用COUNT(1)代替COUNT(*)。
只需执行描述操作,它将显示所有列,然后在底部您可以看到它获取的行数,即列数。