hadoop 实现文件压缩
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 实现文件压缩相关推荐
- Hadoop应用实战100讲(一)-Hadoop进行文件压缩
前言 在集群中大规模的数据的转换与传输是一项艰巨的任务,而Hadoop自带一套特有的文件I/O系统,使得这项艰巨的任务变得简单. 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是 ...
- Hadoop IO 文件压缩 序列化
文件中使用getcodec()方法,可以将文件属性名映射到一个CompressionCodec,该去文件的Path对象当参数. CodecPool使用原生的代码库并且需要在用执行中执行大量解压和压缩, ...
- Hadoop文件压缩格式分析和比较
Hadoop支持压缩格式: 压缩格式 可分割 算法 扩展名 Linux工具 gzip 否 DEFLATE .gz gzip lzo 是(加索引) LZO .lzo lzop snappy 否 Snap ...
- Hadoop SequenceFile BLOCK压缩类型写入数据机制
2019独角兽企业重金招聘Python工程师标准>>> 最近测试Hadoop数据一致性,发现Hadoop SequenceFile BLOCK压缩类型(io.seqfile.comp ...
- Hadoop之Lzo压缩配置
Hadoop之Lzo压缩配置 一.hadoop-lzo编译 hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件.hadoop-lzo需依赖hadoop和lz ...
- 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 ...
- hadoop 四种压缩格式
1 gzip压缩 优点:压缩率比较高,而且压缩/解压速度也比较快:hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样:有hadoop native库:大部分linux系统都自带g ...
- 大数据培训Hadoop数据压缩之压缩方式选择
压缩方式选择 1 Gzip压缩 优点∶压缩率比较高,而且压缩/解压速度也比较快;Hadoop本身支持,在 应用中处理zip格式的文件就和直接处理文本一样;大部分Linux系统都自带 zip命令,使用方 ...
- HDFS文件压缩与解压缩
实验环境 Linux Ubuntu 16.04 前提条件: 1)Java 运行环境部署完成 2)Hadoop 的单点部署完成 实验内容 在上述前提条件下,学习HDFS文件压缩与解压缩的实验. 实验步骤 ...
最新文章
- java字符串 直接能网络传输吗_atitit.二进制数据无损转字符串网络传输
- spring依赖注入单元测试:expected single matching bean but found 2
- Android --- 知识点记录
- C++ Primer 5th笔记(3)字符串、向量和数组:字符串
- 4. XHTML语法
- UVA211 TheDomino Effect 多米诺效应
- LiveVideoStack线上交流分享 (十六) —— 爱奇艺剧场直播云端混流方案
- 第五章 基元类型、引用类型、值类型 CLR学习第五课
- 【Kafka】failed due to invalid credentials with broker older than 1.1.0
- VC中树状控件(TreeCtrl)的用法
- 第 19 次 CCF CSP 认证 202006-4 1246(digits)
- PECL PEAR php扩展模块的简便安装方式
- seo技术_基础知识_网站pr值的意义_日思663.带你入门SEO基础知识
- c语言实现按键精灵区域找图,按键精灵根据图片查找坐标脚本示例
- 基于遗传算法的TSP和MTSP问题求解(python)
- 推荐系统-利用用户行为数据
- 11万多职场文章技巧ACCESS数据库
- 主题:一个中专生:我在华为面试的真实经历,转http://www.javaeye.com/topic
- Android之设置WebView的UserAgent
- Visio中输入特殊符号和带下标的符号