五、存储和压缩结合
1.修改Hadoop集群具有snappy压缩方式
1.1 查看Hadoop checknative命令使用
hadoop checknative [-a|-h] check native hadoop and compression libraries availability
1.2 查看Hadoop支持的压缩方式
hadoop checknative
1.3 将编译的had*.tar.gz上传至'/root/software/'
1.4 解压had*.tar.gz至当前路径
tar -zxvf hadoop*
1.5 进入看snappy压缩的动态链接库
cd /root/software/hadoop-2.7.2/lib/native/
ll
1.6 将所有内容拷贝至开发集群的同级目录下
cp ../native/* /root/app/hadoop*/lib/native/
/*
1.7 分发集群
xsync naative/
*/
1.8 重新启动hadoop集群和hive
1.9 再次查看hadoop支持的压缩类型
hadoop checknative
可以看到 snappy: true
2.测试存储和压缩
官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
2.1 创建一个非压缩的orc存储方式
create table log_orc_none(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as orc tblproperties ("orc.compress"="NONE"); --- 非压缩格式
insert into table log_orc_none select * from log_text;
dfs -du -h /user/hive/warehouse/log_orc_none/;
2.2 创建一个SNAPPY压缩的ORC存储方式
create table log_orc_snappy(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as orc tblproperties ("orc.compress"="SNAPPY");
insert into table log_orc_snappy select * from log_text;
dfs -du -h /user/hive/warehouse/log_orc_snappy/;
2.3 对比数据大小
默认创建的ORC存储方式 < snappy压缩方式
原因是orc存储文件默认采用ZLIB压缩,比snappy压缩的小。
2.4 存储方式和压缩总结
在实际的项目开发当中,hive表的数据存储格式一般选择orc或者parquet。
压缩方式一般选择snappy,lzo