Hive 压缩

Map输出压缩

开启map输出阶段压缩可以减少job中map和Reduce task间数据传输量。

示例:

  1. 开启hive中间传输数据压缩功能
    hive (default)>set hive.exec.compress.intermediate=true;
    Hive 压缩
  2. 开启mapreduce中map输出压缩功能
    hive (default)>set mapreduce.map.output.compress=true;
    Hive 压缩
  3. 设置mapreduce中map输出数据的压缩方式
    hive (default)>set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
    Hive 压缩
  4. 执行查询语句
    Hive 压缩
  5. 查看是否压缩
    打开网址:http://hcmaster:8088/cluster
    Hive 压缩
    单击History连接
    Hive 压缩
    在打开的页面中搜索compress.codec
    Hive 压缩

Reduce输出压缩

示例:

  1. 开启hive最终输出数据压缩功能
    hive (default)>set hive.exec.compress.output=true;
    Hive 压缩
  2. 开启mapreduce最终输出数据压缩
    hive (default)>set mapreduce.output.fileoutputformat.compress=true;
    Hive 压缩
  3. 设置mapreduce最终数据输出压缩方式
    hive (default)> set mapreduce.output.fileoutputformat.compress.codec =
    org.apache.hadoop.io.compress.SnappyCodec;
    Hive 压缩
  4. 设置mapreduce最终数据输出压缩为块压缩
    Hive 压缩
  5. 测试一下输出结果是否是压缩文件
    hive (default)> insert overwrite local directory
    ‘/opt/module/datas/distribute-result’ select * from emp distribute by deptno sort by empno desc;
    Hive 压缩
  6. 再次执行第4步中,设置 hive (default)> set mapreduce.output.fileoutputformat.compress.type=BLOCK;然后测试
    Hive 压缩
    结果:
    Hive 压缩