大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
- 软件环境
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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188948.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...