Hive高阶之显示数据库名称和字段名

在hive中默认是不显示数据库的名称和数据表的字段名称的,这样我们在hive进行查询的时候就会发现不是很方便。默认hive的客户端执行方式如下:

[root@node3 ~]# sudo -u hive hive
Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-5.15.2-1.cdh5.15.2.p0.3/jars/hive-common-1.1.0-cdh5.15.2.jar!/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive> show databases;
OK
default
test
Time taken: 1.219 seconds, Fetched: 2 row(s)
hive> show tables;
OK
emp
Time taken: 0.085 seconds, Fetched: 8 row(s)
hive> select * from emp;
OK
7369    SMITH   CLERK   7902    1980-12-17      800.0   NULL    20
7499    ALLEN   SALESMAN        7698    1981-2-20       1600.0  300.0   30
......
7934    MILLER  CLERK   7782    1982-1-23       1300.0  NULL    10
Time taken: 0.768 seconds, Fetched: 14 row(s)
hive> 

如何才能让客户端显示我们想知道的数据库和字段信息呢?

1.显示数据库信息

临时方式是在hive客户端设置参数:hive.cli.print.current.db为true

hive> set hive.cli.print.current.db;
hive.cli.print.current.db=false
hive> set hive.cli.print.current.db=true;
hive (default)> use test;
OK
Time taken: 0.101 seconds
hive (test)> 

可以看出当前的数据库已经显示在hive提示符的后面。切换数据库后会显示新的数据库在后面。

2.显示数据表字段

hive默认是不显示数据表的字段的,通过设置参数:hive.cli.print.header为true就可以显示字段名称。

hive (test)> select * from emp;
OK
7369    SMITH   CLERK   7902    1980-12-17      800.0   NULL    20
......
7934    MILLER  CLERK   7782    1982-1-23       1300.0  NULL    10
Time taken: 0.185 seconds, Fetched: 14 row(s)
hive (test)> set hive.cli.print.header=true;
hive (test)> select * from emp;
OK
emp.empno       emp.ename       emp.job emp.mgr emp.hiredate    emp.sal emp.comemp.deptno
7369    SMITH   CLERK   7902    1980-12-17      800.0   NULL    20
......
7934    MILLER  CLERK   7782    1982-1-23       1300.0  NULL    10
Time taken: 0.102 seconds, Fetched: 14 row(s)

可以看出字段名称都显示在查询结果的第一行了。但是我们发现,表名称也显示出来了,这是为了防止字段名出现重复的,所以在字段名前面加上了表名。

3.去除表名

表名显示在字段名称前面有时候感觉有点多余,这个表名是可以不显示的,设置参数hive.resultset.use.unique.column.names为false就可以不显示表名。

hive (test)> set hive.resultset.use.unique.column.names=false;
hive (test)> select * from emp;
OK
empno   ename   job     mgr     hiredate        sal     comm    deptno
7369    SMITH   CLERK   7902    1980-12-17      800.0   NULL    20
......
7934    MILLER  CLERK   7782    1982-1-23       1300.0  NULL    10
Time taken: 0.08 seconds, Fetched: 14 row(s)

可以看出字段名称前面的表名已经没有了。

4.永久生效

前面三步的设置都是在当前客户端临时生效的,如果退出客户端,那么又会回到之前的设置,如何将这些设置永久生效呢?就需要修改hive-site.xml配置文件。在该文件中加入如下三个配置内容:

  <property>
    <name>hive.cli.print.header</name>
    <value>true</value>
  </property>
  <property>
    <name>hive.resultset.use.unique.column.names</name>
    <value>false</value>
  </property>
   <property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
  </property>

需要修改的是hive客户端所在的服务器上的hive-site.xml客户端,修改完后重新启动hive客户端,就可以看到参数已经生效了,下次重新启动客户端后该配置还是有效的。

猜你喜欢

转载自blog.csdn.net/xjjdlut/article/details/88543395