zoukankan      html  css  js  c++  java
  • Hadoop 文件压缩

    1、指定编解码器类

      public void deflateCompress() throws IOException {
            //获取deflate编解码器类
            Class codecClass = DeflateCodec.class;
            //实例化
            CompressionCodec codec =  (CompressionCodec)ReflectionUtils.newInstance(codecClass,new Configuration());
            //创建文件输出流
            FileOutputStream fos =  new FileOutputStream("D:/compress/1.deflate");
            //得到文件压缩流
            CompressionOutputStream zipout = codec.createOutputStream(fos);
            IOUtils.copyBytes(new FileInputStream("D:/compress/hello.txt"),zipout,1024);
            zipout.close();
        }

    2、不指定编解码器类-通用压缩测试

     @Test
        public void deflateCompress() throws IOException {
          Class[] zipclass = {
                  DeflateCodec.class,
                  GzipCodec.class,
                  BZip2Codec.class,
          };
          for(Class c : zipclass){
              commonCompress(c);
          }
        }
    
        public void commonCompress(Class codecClass) throws IOException {
            //获取当前系统毫秒数
            long start = System.currentTimeMillis();
            //实例化
            CompressionCodec codec =  (CompressionCodec)ReflectionUtils.newInstance(codecClass,new Configuration());
            //创建文件输出流,得到默认扩展流
            FileOutputStream fos =  new FileOutputStream("D:/compress/compress" + codec.getDefaultExtension());
            //得到文件压缩流
            CompressionOutputStream zipout = codec.createOutputStream(fos);
            IOUtils.copyBytes(new FileInputStream("D:/compress/hello.txt"),zipout,1024);
            zipout.close();
            System.out.println(codecClass.getSimpleName() + " : " + (System.currentTimeMillis()-start)+ "ms" );
    
        }

    测试结果
    DeflateCodec : 441ms
    GzipCodec : 4ms
    BZip2Codec : 55ms


    3、解压缩

    //解压
        public void unzip(Class codecClass) throws IOException {
            //获取当前系统毫秒数
            long start = System.currentTimeMillis();
            //实例化
            CompressionCodec codec =  (CompressionCodec)ReflectionUtils.newInstance(codecClass,new Configuration());
            //创建文件输入流,
            FileInputStream fis  =  new FileInputStream("D:/compress/compress" + codec.getDefaultExtension());
            //得到文件压缩流
            CompressionInputStream zipIn = codec.createInputStream(fis);
            IOUtils.copyBytes(zipIn,new FileOutputStream("D:/compress/unzip" + ".txt"),1024);
            zipIn.close();
            System.out.println(codecClass.getSimpleName() + " : " + (System.currentTimeMillis()-start) + "ms");
    
        }

    DeflateCodec : 414ms
    GzipCodec : 44ms
    Disconnected from the target VM, address: '127.0.0.1:61073', transport: 'socket'
    BZip2Codec : 45ms
































    欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
  • 相关阅读:
    《软件需求十步走》阅读笔记一
    《探索需求》读书笔记三
    2018.9.26 随笔
    2018.9.09 随笔
    日期随笔,目录
    2018.9.03 随笔
    linux signal函数遇到的问题
    关于子线程执行两次的问题
    本科四年的一点经验
    linux 网络编程 3---(io多路复用,tcp并发)
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10326987.html
Copyright © 2011-2022 走看看