我知道您可以通过hive中的以下技巧从表中获取列名:
hive> set hive.cli.print.header=true;
hive> select * from tablename;
是否也可以只从表中获取列名?
我不喜欢为一些我需要的东西更改设置。
我目前的解决方案如下:
hive> set hive.cli.print.header=true;
hive> select * from tablename;
hive> set hive.cli.print.header=false;
这似乎过于冗长,反对DRY原则。
答案 0 :(得分:57)
如果您只是想查看列名,则该行应该提供它而不更改任何设置:
describe database.tablename;
但是,如果这对您的hive版本不起作用,则此代码将提供它,但您的默认数据库现在将是您正在使用的数据库:
use database;
describe tablename;
答案 1 :(得分:49)
您也可以show columns in $table
或查看Hive, how do I retrieve all the database's tables columns来访问hive元数据
答案 2 :(得分:0)
使用Hive CLI中的desc tablename
或直线获取所有列名称。如果要在文件中使用列名,请从shell运行以下命令。
$ hive -e 'desc dbname.tablename;' > ~/columnnames.txt
其中dbname
是您的表所在的Hive数据库的名称
您可以在根目录中找到文件columnnames.txt。
$cd ~
$ls
答案 3 :(得分:-1)
解决办法是
use show columns in table_name;
这比
更简单use describe tablename;
非常感谢。
答案 4 :(得分:-2)
最好的方法是设置以下属性:
set hive.cli.print.header=true;
set hive.resultset.use.unique.column.names=false;