74

在 Hive 中,当我们进行查询(如:)时 select * from employee,我们不会在输出中获得任何列名(如我们将在RDBMS SQL中获得的姓名、年龄、薪水),我们只获得值。

执行任何查询时,有没有办法让列名与输出一起显示?

4

7 回答 7

148

如果我们想在 HiveQl 中查看表的列名,则应将以下 hive conf 属性设置为 true。

hive> set hive.cli.print.header=true;

如果您希望始终查看列名,则使用第一行中的上述设置更新 $HOME/.hiverc 文件。

--Hive 自动在您的 HOME 目录中查找名为 .hiverc 的文件并运行其中包含的命令(如果有)

于 2013-08-01T12:06:07.290 回答
15

要与输出一起打印标题,应在执行查询之前将以下配置单元配置属性设置为 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你的表名

于 2013-08-01T07:49:38.350 回答
4

以上所有答案都已经回答了这个问题。但是如果有人希望这个属性永久开启,那么就有这个属性:hive.cli.print.headerinhive-default.xmlhive-site.xml

它的默认值为假。将其值设为 true 并保存。完毕。

于 2015-06-16T19:51:09.253 回答
3
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
于 2017-07-10T11:37:45.387 回答
3

大多数解决方案都是准确的。

设置属性hive.cli.print.header = true有效。

但如果您使用的是 cloudera、HDP 或任何其他发行版,这些将被重置。因此更新 Hive 配置中的这些值并重新启动服务。

这将是一个永久修复。希望这可以帮助。

于 2015-09-07T20:07:47.563 回答
2

在执行查询之前设置此属性:

hive> set hive.cli.print.header=true;
于 2013-08-01T07:16:24.833 回答
0

利用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
于 2015-07-09T17:54:30.620 回答