Hive高階之顯示資料庫名稱和欄位名

2021-09-12 13:27:27 字數 3395 閱讀 9831

在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;

okdefault

test

time taken: 1.219 seconds, fetched: 2 row(s)

hive> show tables;

okemp

time taken: 0.085 seconds, fetched: 8 row(s)

hive>

select * from emp;

ok7369 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>

如何才能讓客戶端顯示我們想知道的資料庫和字段資訊呢?

臨時方式是在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提示符的後面。切換資料庫後會顯示新的資料庫在後面。

hive預設是不顯示資料表的字段的,通過設定引數:hive.cli.print.header為true就可以顯示欄位名稱。

hive (test)

>

select * from emp;

ok7369 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;

okemp.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)

可以看出欄位名稱都顯示在查詢結果的第一行了。但是我們發現,表名稱也顯示出來了,這是為了防止欄位名出現重複的,所以在欄位名前面加上了表名。

表名顯示在欄位名稱前面有時候感覺有點多餘,這個表名是可以不顯示的,設定引數hive.resultset.use.unique.column.names為false就可以不顯示表名。

hive (test)

>

set hive.resultset.use.unique.column.names=false;

hive (test)

>

select * from emp;

okempno 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)

可以看出欄位名稱前面的表名已經沒有了。

前面三步的設定都是在當前客戶端臨時生效的,如果退出客戶端,那麼又會回到之前的設定,如何將這些設定永久生效呢?就需要修改hive-site.xml配置檔案。在該檔案中加入如下三個配置內容:

>

>

hive.cli.print.headername

>

>

truevalue

>

property

>

>

>

hive.resultset.use.unique.column.namesname

>

>

falsevalue

>

property

>

>

>

hive.cli.print.current.dbname

>

>

truevalue

>

property

>

需要修改的是hive客戶端所在的伺服器上的hive-site.xml客戶端,修改完後重新啟動hive客戶端,就可以看到引數已經生效了,下次重新啟動客戶端後該配置還是有效的。

資料庫高階之資料庫事務(ACID)

事務 transaction 是併發控制的基本單位。所謂事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。例如,銀行轉帳工作 從乙個帳號扣款並使另乙個帳號增款,這兩個操作要麼都執行,要麼都不執行。事務的 acid 特性是由關聯式資料庫管理系統 rdbms,資料庫系...

資料庫驅動名稱

rdbms driver axion axiondb.jdbc.axiondriver cloudscape cloudscape.core.jdbcdriver db2db2 as400 ibm.as400.access.as400jdbcdriver hypersonic hsql.jdbcdr...

資料庫驅動名稱

資料庫名稱 driver名稱 axion org.axiondb.jdbc.axiondriver cloudscape com.cloudscape.core.jdbcdriver db2db2 as400 com.ibm.as400.access.as400jdbcdriver hyperson...