ITPub博客

首页 > 数据库 > > EsgynDB 创建Hive外表

EsgynDB 创建Hive外表

作者:u_9ff4c058a0e0 时间:2022-05-27 16:37:17 0 删除 编辑

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;
OK
CREATE 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.LazySimpleSerDe'
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://hadoop3.esgyn.cn:8020/user/hive/warehouse/ga.db/jt_dw_d_dom_user'
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.


 


原文链接:https://blog.csdn.net/Post_Yuan/article/details/79914627

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69999831/viewspace-3153551/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: BGraph介绍
请登录后发表评论 登录
全部评论

注册时间:2022-02-11

  • 博文量
    1828
  • 访问量
    20599