您的位置:首页 > 其它

Hive数据仓库ODS层数据存储设计

2017-12-01 17:11 676 查看
软件环境

Hadoop 2.6.0-cdh5.9.0

Hive 1.1.0-cdh5.9.0

Zookeeper 3.4.5-cdh5.9.0

需求背景

数据来源是将8台服务器日志各自压缩成*.gz(8个gz文件)后,按天和小时分区传入到HDFS上,然后通过创建Hive ODS外部表加载到表对应分区,这样一天下来会生产192个gz文件,gz文件是不能进行切分所以查询一天则会产生192个Map数,导致后结数据处理性能与资源占用都比较大。需要进行优化>如下几点:


存储后数据可切分

数据存储压缩率高

数据加载速度要快

技术方案

通过创建TTexfFile存储格式ODS临时表外部表,将HDFS上的文件目录映射到外部表

create table temp.TempTableName(
col1 string comment 'col1'
,col2 string comment 'col2'
) partitioned by (p_dt string, p_hours string)
row format serde 'org.openx.data.jsonserde.JsonSerDe'
with serdeproperties ("ignore.malformed.json"="true")
stored as textfile
;

Alter table temp.TempTableName add partition (p_dt='20141101',p_hours='00') location '/ods/TempTableName/20141101/00';


在ODS层创建ORC存储格式相应的表,将临时外部表数据插入到ODS表

create table ods.TableName(
col1 string comment 'col1'
,col2 string comment 'col2'
) partitioned by (p_dt string, p_hours string)
stored as orc
;
insert overwrite table TableName partition(p_dt='20141101',p_hours='00')
select * from TempTableName where p_dt='20141101' and p_hours='00'


数据导入完闭,后续基本ODS进行操作即可

ss

方案优点

数据可分割

数据压缩率90%左右

方案缺点

性能比以前慢(如是ODS只操作一次建议不采用此方案)

维护成本提高

文章参考

https://cwiki.apache.org/confluence/display/Hive/CompressedStorage

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hive 数据仓库 ODS层