在 Hive 中,当我们进行查询(如:)时 select * from employee
,我们不会在输出中获得任何列名(如我们将在RDBMS SQL中获得的姓名、年龄、薪水),我们只获得值。
执行任何查询时,有没有办法让列名与输出一起显示?
如果我们想在 HiveQl 中查看表的列名,则应将以下 hive conf 属性设置为 true。
hive> set hive.cli.print.header=true;
如果您希望始终查看列名,则使用第一行中的上述设置更新 $HOME/.hiverc 文件。
--Hive 自动在您的 HOME 目录中查找名为 .hiverc 的文件并运行其中包含的命令(如果有)
要与输出一起打印标题,应在执行查询之前将以下配置单元配置属性设置为 true。
hive> set hive.cli.print.header=true;
hive> select * from table_name;
如果我们想在文件中获取结果,我们也可以使用这样的查询。
hive -e 'set hive.cli.print.header=true;select * from table_name;' > result.xls
其中table_name你的表名
以上所有答案都已经回答了这个问题。但是如果有人希望这个属性永久开启,那么就有这个属性:hive.cli.print.header
inhive-default.xml
或hive-site.xml
。
它的默认值为假。将其值设为 true 并保存。完毕。
1)Permenant solution
change this property in hive-site.xml file under $HIVE_HOME/conf folder
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>Whether to print the names of the columns in query output.
</description>
</property>
2)Temporary solution:
go to hive prompt execute this comman
hive>set hive.cli.print.header=True
大多数解决方案都是准确的。
设置属性hive.cli.print.header = true
有效。
但如果您使用的是 cloudera、HDP 或任何其他发行版,这些将被重置。因此更新 Hive 配置中的这些值并重新启动服务。
这将是一个永久修复。希望这可以帮助。
在执行查询之前设置此属性:
hive> set hive.cli.print.header=true;
利用set hive.cli.print.header=true;
hive> set hive.cli.print.header=true;
hive> select * from tblemployee;
OK
id name gender salary departmentid
1 tomr male 40000 1
2 cats female 30000 2
3 john male 50000 1
4 james male 35000 3
5 sara female 29000 2
6 bens male 35000 1
7 saman female 30000 NULL
8 russel male 40000 2
9 valar female 30000 1
10 todd male 95000 NULL
Time taken: 9.892 seconds