hadoop 实现文件压缩
转载http://blog.csdn.net/u011491148/article/details/9966369#
感谢 转载的博主分享!

cd /home/xm/compress   进入compress目录
touch HadoopImg.java  建立java文件
vim HadoopImg.java  写进代码 (附后)

对.java文件进行编译
javac HadoopImg.java 得到class文件

打jar包
jar -cvf hadoopimgc.jar HadoopImg.class

进行压缩

[root@master compress]# $HADOOP_HOME/bin/hadoop jar ./hadoopimgc.jar compress timg BZip2Codec

hadoopimgc.jar 为要运行的jar包
compress jar包中要执行的函数
timg 要压缩的文件
BZip2Codec 采取的压缩方法

解压缩

[root@master compress]# $HADOOP_HOME/bin/hadoop jar ./hadoopimgc.jar decompress timg.bz2

decompress 执行的函数
timg.bz2 解压缩的文件

java源码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundExceiption;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionCodecFactory;
import org.apache.hadoop.io.compress.CompressionOutputStream;
import org.apache.hadoop.util.ReflectionUtils;public class HadoopImg {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {if (args[0].equals("compress")) {compress(args[1], "org.apache.hadoop.io.compress." + args[2]);}        else if (args[0].equals("decompress"))decompres(args[1]);else {System.err.println("Error!\n usgae: hadoop jar HadoopImg.jar [compress] [filename] [compress type]");System.err.println("\t\ror [decompress] [filename] ");return;}System.out.println("down");}/** filename是希望压缩的原始文件,method是欲使用的压缩方法(如BZip2Codec等)*/public static void compress(String filername, String method) throws ClassNotFoundException, IOException {System.out.println("[" + new Date() + "] : enter compress");File fileIn = new File(filername);InputStream in = new FileInputStream(fileIn);Class codecClass = Class.forName(method);        Configuration conf = new Configuration();  // 通过名称找到对应的编码/解码器CompressionCodec codec = (CompressionCodec)ReflectionUtils.newInstance(codecClass, conf);// 该压缩方法对应的文件扩展名File fileOut = new File(filername + codec.getDefaultExtension()); fileOut.delete();OutputStream out = new FileOutputStream(fileOut);CompressionOutputStream cout = codec.createOutputStream(out);System.out.println("[" + new Date() + "]: start compressing ");IOUtils.copyBytes(in, cout, 1024*1024*5, false);      // 缓冲区设为5MBSystem.out.println("[" + new Date() + "]: compressing finished ");in.close();cout.close();}/** filename是希望解压的文件*/public static void decompres(String filename) throws FileNotFoundException, IOException {System.out.println("[" + new Date() + "] : enter compress");Configuration conf = new Configuration();CompressionCodecFactory factory = new CompressionCodecFactory(conf);        CompressionCodec codec = factory.getCodec(new Path(filename));if (null == codec) {System.out.println("Cannot find codec for file " + filename);return;}File fout = new File(filename+ ".decoded");InputStream cin = codec.createInputStream(new FileInputStream(filename));OutputStream out = new FileOutputStream(fout);System.out.println("[" + new Date() + "]: start decompressing ");IOUtils.copyBytes(cin, out, 1024*1024*5, false);System.out.println("[" + new Date() + "]: decompressing finished ");cin.close();out.close();}
}

hadoop 实现文件压缩相关推荐

  1. Hadoop应用实战100讲(一)-Hadoop进行文件压缩

    前言 在集群中大规模的数据的转换与传输是一项艰巨的任务,而Hadoop自带一套特有的文件I/O系统,使得这项艰巨的任务变得简单. 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是 ...

  2. Hadoop IO 文件压缩 序列化

    文件中使用getcodec()方法,可以将文件属性名映射到一个CompressionCodec,该去文件的Path对象当参数. CodecPool使用原生的代码库并且需要在用执行中执行大量解压和压缩, ...

  3. Hadoop文件压缩格式分析和比较

    Hadoop支持压缩格式: 压缩格式 可分割 算法 扩展名 Linux工具 gzip 否 DEFLATE .gz gzip lzo 是(加索引) LZO .lzo lzop snappy 否 Snap ...

  4. Hadoop SequenceFile BLOCK压缩类型写入数据机制

    2019独角兽企业重金招聘Python工程师标准>>> 最近测试Hadoop数据一致性,发现Hadoop SequenceFile BLOCK压缩类型(io.seqfile.comp ...

  5. Hadoop之Lzo压缩配置

    Hadoop之Lzo压缩配置 一.hadoop-lzo编译 hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件.hadoop-lzo需依赖hadoop和lz ...

  6. Hadoop配置lzo压缩

    前言 OS:CentOS 7 hadoop:2.7.7 lzo:lzo-2.10 Apache Maven:3.6.0 JDK:1.8.0_221 hadoop-lzo是一个围绕lzo压缩算法实现的M ...

  7. hadoop 四种压缩格式

    1 gzip压缩 优点:压缩率比较高,而且压缩/解压速度也比较快:hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样:有hadoop native库:大部分linux系统都自带g ...

  8. 大数据培训Hadoop数据压缩之压缩方式选择

    压缩方式选择 1 Gzip压缩 优点∶压缩率比较高,而且压缩/解压速度也比较快;Hadoop本身支持,在 应用中处理zip格式的文件就和直接处理文本一样;大部分Linux系统都自带 zip命令,使用方 ...

  9. HDFS文件压缩与解压缩

    实验环境 Linux Ubuntu 16.04 前提条件: 1)Java 运行环境部署完成 2)Hadoop 的单点部署完成 实验内容 在上述前提条件下,学习HDFS文件压缩与解压缩的实验. 实验步骤 ...

最新文章

  1. java字符串 直接能网络传输吗_atitit.二进制数据无损转字符串网络传输
  2. spring依赖注入单元测试:expected single matching bean but found 2
  3. Android --- 知识点记录
  4. C++ Primer 5th笔记(3)字符串、向量和数组:字符串
  5. 4. XHTML语法
  6. UVA211 TheDomino Effect 多米诺效应
  7. LiveVideoStack线上交流分享 (十六) —— 爱奇艺剧场直播云端混流方案
  8. 第五章 基元类型、引用类型、值类型 CLR学习第五课
  9. 【Kafka】failed due to invalid credentials with broker older than 1.1.0
  10. VC中树状控件(TreeCtrl)的用法
  11. 第 19 次 CCF CSP 认证 202006-4 1246(digits)
  12. PECL PEAR php扩展模块的简便安装方式
  13. seo技术_基础知识_网站pr值的意义_日思663.带你入门SEO基础知识
  14. c语言实现按键精灵区域找图,按键精灵根据图片查找坐标脚本示例
  15. 基于遗传算法的TSP和MTSP问题求解(python)
  16. 推荐系统-利用用户行为数据
  17. 11万多职场文章技巧ACCESS数据库
  18. 主题:一个中专生:我在华为面试的真实经历,转http://www.javaeye.com/topic
  19. Android之设置WebView的UserAgent
  20. Visio中输入特殊符号和带下标的符号

热门文章

  1. 力扣——883. 三维形体投影面积(Java、JavaScript、C实现)
  2. 二进制推广者电子计算机,31-戏说计算机与二进制那点事儿
  3. Vue与Node.js实现手机短信验证登录
  4. 工信部通报下架60款APP:关联有赞、三六零、唯品会等上市公司
  5. 软件测试---测试技术(2)
  6. 初始C++ - auto关键字与内联函数
  7. 160个CrackMe之108 mfc程序 寻找按钮事件,代码还原(上)
  8. vue中已声明XX,但从未读取其值 解决方法
  9. Matplotlib可视化练习
  10. 英国药品信息数据查询(网址)