EsgynDB 建立Hive外表

2021-08-18 16:15:30 字數 4109 閱讀 2336

esgyndb支援直接讀取hive metadata訪問hive原生表,從而繞過了hive自身需要經過map reduce的動作而減少延遲。一般情況下,使用esgyndb的sql引擎去訪問hive原生錶比使用hive本身的map reduce方式的效能要高出很多倍。

從esgyndb執行對hive原生表的訪問時,也涉及到執行計畫是否優化的問題,執行計畫是否正確依賴於對hive表的統計資訊的正確性,因此一般情況下我們也需要對hive做更新統計資訊的動作,以保證執行計畫的有效性。

然而,很多時候hive原生表的字段定義並不是很具體,很多字段型別可能直接用string型別定義,string型別字段對於trafodion而言被認為是乙個很大的字串,因而可能會影響更新統計資訊的執行效率和效能。

esgyndb支援對hive原生表建立相應的外部表,外部表的表結構等資訊儲存在esgyndb中,統計資訊也將儲存於esgyndb中。

下面我們簡單介紹乙個建立hive外表的事例,假如有hive原生表如下,

hive> show create table jt_dw_d_dom_user;

okcreate table `jt_dw_d_dom_user`(

`device_number`

string,

`lac`

string,

`cell_id`

string)

comment '號碼居住地明細'

partitioned by (

`month_part`

string comment '月分割槽',

`day_part`

string comment '日分割槽')

row format serde

'org.apache.hadoop.hive.serde2.lazy.lazy******serde'

with serdeproperties (

'field.delim'

=',',

'serialization.format'

=',',

'serialization.null.format'

='')

stored as inputformat

'org.apache.hadoop.mapred.textinputformat'

outputformat

'org.apache.hadoop.hive.ql.io.hiveignorekeytextoutputformat'

location

'hdfs:'

tblproperties (

'transient_lastddltime'

='1522699019')

從esgyndb中建立對應外部表並更新統計資訊,

create

external

table jt_dw_d_dom_user(

device_number varchar(30),

lac varchar(30),

cell_id varchar(10),

month_part varchar(10),

day_part varchar(10)

) for hive.hive.jt_dw_d_dom_user;

update statistics for

table hive.hive.jt_dw_d_dom_user on every column sample;

注:建立hive外表部的語法為,

create external table table_name (

...)

for hive.schema_name.table_name;

那麼我們建立的hive外表結構和統計資訊儲存在**呢?

>>get schemas;

schemas in catalog trafodion

*************************===

seabase

_hivestats_

_hv_hive_

_libmgr_

_md_

_repos_

通過」get schemas」我們看到有兩個模式hv_hive和hivestats,他們就是分別用來儲存hive外表和統計資訊的schema。

>>set schema "_hv_hive_";

--- sql operation complete.

>>get tables;

tables in schema trafodion._hv_hive_

***********************************=

jt_dw_d_dom_user

>>showddl hive.hive.jt_dw_d_dom_user;

/* hive ddl */

create table default.jt_dw_d_dom_user

( device_number string

, lac string

, cell_id string

) partitioned by (month_part string,day_part string)

stored as textfile

;/* trafodion ddl */

register

/*internal*/ hive table hive.hive.jt_dw_d_dom_user;

/* objectuid = 3405442207697893392 */

create external table jt_dw_d_dom_user

( device_number varchar(30) character set iso88591 collate

default

default

null

not serialized

, lac varchar(30) character set iso88591 collate

default

default

null

not serialized

, cell_id varchar(10) character set iso88591 collate

default

default

null

not serialized

, month_part varchar(10) character set iso88591 collate

default

default

null

not serialized

, day_part varchar(10) character set iso88591 collate

default

default

null

not serialized

) for hive.hive.jt_dw_d_dom_user

;--- sql operation complete.

>>set schema "_hivestats_";

--- sql operation complete.

>>get tables;

tables in schema trafodion._hivestats_

***********************************===

sb_histograms

sb_histogram_intervals

sb_persistent_samples

--- sql operation complete.

Hive外表的使用

前言 hive建立關聯hbase表有2種形式,第一是建立hive內錶,指向hbase,第二是建立hive外表,引用hbase中已經存在的一張表 在hbase中建立表,建立乙個表名稱為hive hbase test,列族名稱為f的hbase表 create hive hbase test f 外hiv...

Hive建立內錶和外表的區別

內部表也稱為管理表或臨時表,hive控制著整個表的生命週期,預設存放目錄為 user hive warehouse,當刪除一張表的時候表中的資料也會相應的刪除。缺點 在實際開發中,內部表不方便和其他工作共享資料,hive在設計之初就不允許共享管理表中的資料,那應該如何來實現呢?hive提供了外部表。...

hive外表和事務表

建立外表 beeline u jdbc hive2 n hdfs t location tmp nj12345 case info 建立事務表 clustered by case serial into 250 buckets stored as orc insert insto orc事務表 se...