基于Hadoop的数据压缩与解压缩实例
来源:互联网 发布:屏蔽一段ip的js代码 编辑:程序博客网 时间:2024/06/05 13:25
数据压缩
测试的输入数据(/input/kmeans/sample.txt)为:
1,1
2,2
3,3
-3,-3
-4,-4
-5,-5
输出结果(/output/compress.gz)为一系列压缩字符串
import java.io.IOException;import java.io.InputStream; import java.io.OutputStream; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; 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.CompressionOutputStream; import org.apache.hadoop.util.ReflectionUtils; import com.panky.tools.Tools; public class StreamCompressor { public static void main(String[] args) throws IOException, ClassNotFoundException { String codecClassname="org.apache.hadoop.io.compress.GzipCodec"; //获得压缩类的全名称 Class<?> codecClass=Class.forName(codecClassname); Configuration configuration=new Tools().getTools(); FileSystem fileSystem=FileSystem.get(configuration); InputStream inputStream=fileSystem.open(new Path("/input/kmeans/sample.txt")); OutputStream outputStream=fileSystem.create(new Path("/output/compress.gz")); //通过ReflectionUtil来创建一个CompressionCodec实例 CompressionCodec compressionCodec=(CompressionCodec)ReflectionUtils.newInstance(codecClass, configuration); //由CompressionOutputStream对System.out进行包装,对数据进行压缩 CompressionOutputStream compressionOutputStream=compressionCodec.createOutputStream(outputStream); IOUtils.copyBytes(inputStream, compressionOutputStream, 4096, false); compressionOutputStream.finish(); } }数据解压缩
输入数据(/output/compress.gz)为:数据压缩的输出结果
输出结果(/output/compress)<去掉输入文件后缀名即为输出文件名>:
1,1
2,2
3,3
-3,-3
-4,-4
-5,-5
import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;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.CompressionInputStream;import com.panky.tools.Tools;public class FileDecompressor {public static void main(String[] args) throws IOException {//如果文件以.gz结尾,则可以使用GzipCodec读取。String uriString="/output/compress.gz";Configuration configuration=new Tools().getTools();FileSystem fileSystem=FileSystem.get(configuration);CompressionCodecFactory factory=new CompressionCodecFactory(configuration);//使用getCodec()方法,CompressionCodecFactory提供了一种可以将文件扩展名映射到一个CompressionCodec的方法。CompressionCodec codec=factory.getCodec(new Path(uriString));if(codec==null){System.out.println("No codec found for"+uriString);System.exit(1);}//通过CompressionCodecFactory对象的静态方法removeSuffix()实现 找到对应的codec,去除文件扩展名形成输出文件名String outString=CompressionCodecFactory.removeSuffix(uriString, codec.getDefaultExtension());//通过createInputStream(InputStream in)方法获得CompressionInputStream对象InputStream inputStream=codec.createInputStream(fileSystem.open(new Path(uriString)));//使用这句也可以进行解压缩//CompressionInputStream inputStream=codec.createInputStream(fileSystem.open(new Path(uriString)));OutputStream outputStream=fileSystem.create(new Path(outString));IOUtils.copyBytes(inputStream, outputStream, configuration);IOUtils.closeStream(inputStream);IOUtils.closeStream(outputStream);}}
阅读全文
0 0
- 基于Hadoop的数据压缩与解压缩实例
- android数据压缩与解压缩
- android数据压缩与解压缩
- 实用的数据压缩解压缩方法
- 基于网络的数据压缩
- 基于哈夫曼树的数据压缩算法
- Hadoop 数据压缩
- Hadoop数据压缩
- Hadoop基于文件的数据结构及实例
- Hadoop基于文件的数据结构及实例
- 基于base64的GSON的数据压缩
- 基于哈夫曼编码的文本文件压缩与解压缩
- 基于JPEG压缩编码的数据压缩算法的研究与实现
- 基于Hadoop的数据序列化与反序列化实例
- Hadoop On Yarn Mapreduce运行原理与常用数据压缩格式
- Hadoop On Yarn Mapreduce运行原理与常用数据压缩格式
- Cocos2d-x 通讯的数据压缩与解压
- 常用数据压缩库的编译与使用
- linux centos6.5下的mysql重置root密码的问题
- python map()
- 基于用户的协同过滤推荐模型
- bzoj3727 (这真的是树形DP?)
- 通过NSString和NSData将数据写入文件
- 基于Hadoop的数据压缩与解压缩实例
- Eloquent JavaScript 笔记 十: Modules
- UVa1368
- 一分钟了解“#include <iomanip>”
- 关于wireshark抓包的那点事儿
- class path resource [applicationContext.xml] cannot be opened because it does not exist
- Android性能优化小结
- 调整数组顺序使奇数位于偶数前面(java版)
- Hibernate 配置键生成器