hadoop checknative:查看hadoop支持的压缩类型
一、开启Map输出阶段压缩
开启map输出阶段压缩可以减少job中map和Reduce task间数据传输量
1.查看Hadoop支持的压缩方式
set io.compression.codecs;
1.开启hive中间传输数据压缩功能
set hive.exec.compress.intermediate=true;
2.开启mapreduce中map输出压缩功能
set mapreduce.map.output.compress=true;
3.设置mapreduce中map输出数据的压缩方式
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
4.执行查询语句
select count(*) name from table;
二、开启Reduce输出阶段压缩
1.开启hive最终输出数据压缩功能
set hive.exec.compress.output=true;
2.开启mapreduce最终输出数据压缩
set mapreduce.output.fileoutputformat.compress=true;
3.设置mapreduce最终数据输出压缩方式
set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
4.设置mapreduce最终数据输出压缩为块压缩
set mapreduce.output.fileoutputformat.compress.type=BLOCK;
5.测试一下输出结果是否是压缩文件
insert overwrite local directory '/usr/hive/warehouse/xxx/test_snappy' select * from table;
三、文件存储格式
Hive支持的存储数的格式主要有:TEXTFILE 、SEQUENCEFILE、ORC、PARQUET。
TEXTFILE和SEQUENCEFILE的存储格式都是基于行存储的;
ORC和PARQUET是基于列式存储的。
1、创建一个SNAPPY压缩的ORC存储方式
row format delimited fields terminated by '\t'
stored as orc
LOCATION '/usr/hive/warehouse/ods/xxx/xx_orc'
tblproperties ("orc.compress"="SNAPPY");
2、向表中加载数据
insert overwrite table table_orc select * from table;
3、查看表中数据大小
hadoop fs -du -h /usr/hive/warehouse/xx;
4、存储文件的压缩比总结:
ORC > Parquet > textFile
5、存储方式和压缩总结:
hive表的数据存储格式一般选择:orc或parquet。
压缩方式一般选择snappy,lzo。