--(1) 如何设置 开启Map输出阶段压缩----------------
--1. 开启hive 中间传输数据压缩功能
set hive.exec.compress.intermediate=true;
--2. 开启mr 中mapTask 输出结果压缩
set mapreduce.map.output.compress=true;
--3. 设置 mr 中mapTask 输出结果压缩时,使用的压缩方式
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
--4. 测试sql
select name
, count(1)
from (
select '刘备' as name, '张飞' as friend
union all
select '刘备' as name, '张飞' as friend
union all
select '刘备' as name, '关羽' as friend
union all
select '刘备' as name, '赵云' as friend
union all
select '曹操' as name, '许褚' as friend
union all
select '曹操' as name, '荀彧' as friend
) as t1
group by name;
--(2) 如何设置 Reduce输出阶段压缩---------------
--1. 开启hive 最终输出数据压缩功能
set hive.exec.compress.output=true;
--2. 开启mr 中reducetask 输出结果压缩
set mapreduce.output.fileoutputformat.compress=true;
--3. 设置 mr 中mreducetask 输出结果压缩时,使用的压缩方式
set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
--4. 设置 mr 中 最终输出数据为块压缩
set mapreduce.output.fileoutputformat.compress.type=BLOCK;
-- set mapreduce.output.fileoutputformat.compress.type=RECORD;
-- set mapreduce.output.fileoutputformat.compress.type=NONE;
--4. 测试sql
insert overwrite local directory '/root/yasuo3.txt'
select * from business;
--5. 查看结果
-rw-r--r-- 1 root root 266 2月 7 19:02 000000_0
-rw-r--r-- 1 root root 168 2月 7 19:04 000000_0.snappy