Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例)
Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例)
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.编辑配置文件(pml.xml)(我们这里配置的是对“cn.org.yinzhengjie.compress.TestCompressCodec”该包进行打包操作)
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>groupId</groupId>
- <artifactId>yinzhengjieCode</artifactId>
- <version>1.0-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-client</artifactId>
- <version>2.7.3</version>
- </dependency>
- <dependency>
- <groupId>org.anarres.lzo</groupId>
- <artifactId>lzo-hadoop</artifactId>
- <version>1.0.0</version>
- </dependency>
- </dependencies>
- <!--将指定类的所有依赖打入到一个包中-->
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- <archive>
- <manifest>
- <!-- main函数所在的类 -->
- <mainClass>cn.org.yinzhengjie.compress.TestCompressCodec</mainClass>
- </manifest>
- </archive>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id> <!-- this is used for inheritance merges -->
- <phase>package</phase> <!-- bind to the packaging phase -->
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </project>
注意事项如下:
我们通过pom.xml配置文件不难看出我们需要打的包是“cn.org.yinzhengjie.compress.TestCompressCodec”,上述的配置主要是对该包打入相应的依赖包关系,且上述配置仅对该包有效哟。当然我所述的只是“<build></build>”标签里面里面的参数,它是对手动添加依赖的关键!
二.开始打包
1>.需要打包(cn.org.yinzhengjie.compress.TestCompressCodec)的代码如下:
- /*
- @author :yinzhengjie
- Blog:http://www.cnblogs.com/yinzhengjie/tag/Hadoop%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
- EMAIL:y1053419035@qq.com
- */
- package cn.org.yinzhengjie.compress;
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.io.IOUtils;
- import org.apache.hadoop.io.compress.*;
- import org.apache.hadoop.util.ReflectionUtils;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- public class TestCompressCodec {
- /**
- * 设置路径动态传参
- * @param args
- */
- public static void main(String[] args) {
- if(args == null || args.length == 0){
- System.out.println("需要输入路径");
- System.exit(-1);
- }
- Class[] classes = {
- DefaultCodec.class,
- GzipCodec.class,
- BZip2Codec.class,
- Lz4Codec.class,
- LzopCodec.class,
- SnappyCodec.class
- };
- for(Class clazz : classes){
- testCompress(clazz, args[0]);
- testDecompress(clazz,args[0]);
- }
- }
- /**
- * Gzip压缩
- * @throws Exception
- */
- public static void testCompress(Class clazz, String path) {
- try {
- long start = System.currentTimeMillis();
- Configuration conf = new Configuration();
- conf.set("fs.defaultFS", "file:///");
- CompressionCodec codec = (CompressionCodec)ReflectionUtils.newInstance(clazz, conf);
- FileInputStream fis = new FileInputStream(path);
- //获取扩展名
- String ext = codec.getDefaultExtension();
- //创建压缩输出流
- CompressionOutputStream cos = codec.createOutputStream(new FileOutputStream(path+ext));
- IOUtils.copyBytes(fis,cos,1024);
- fis.close();
- cos.close();
- System.out.print("压缩类型:"+ ext+"\t"+ "压缩时间:" + (System.currentTimeMillis() - start)+ "\t");
- File f = new File(path+ext);
- System.out.print("文件大小:"+ f.length() + "\t");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * Gzip解压
- * @throws Exception
- */
- public static void testDecompress(Class clazz,String path) {
- try {
- long start = System.currentTimeMillis();
- Configuration conf = new Configuration();
- conf.set("fs.defaultFS", "file:///");
- CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(clazz, conf);
- //扩展名
- String ext = codec.getDefaultExtension();
- //压缩输入流
- CompressionInputStream cis = codec.createInputStream(new FileInputStream(path+ext));
- FileOutputStream fos = new FileOutputStream(path+ext+".txt");
- IOUtils.copyBytes(cis,fos,1024);
- cis.close();
- fos.close();
- System.out.println("解压时间:" + (System.currentTimeMillis() - start));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
2>.点击“package进行打包操作”
3>.打包后的产物
在打包的过程需要一定的时间,我们需要耐心等待
打包过程中如果没有遇到错误,就会出现以下的界面
打包完成之后,会有两个文件生成,如下图:
三.Hadoop压缩格式综合测试
由于我在Windows测试说当前Hadoop版本不支持snappy压缩格式,官网上也没有相应的下载版本(链接:https://pan.baidu.com/s/1Clhsvv-gzvVX7lQOQ27vng 密码:d367),不过有大神编译了Hadoop支持snappy格式的,如果有时间了我也得去研究研究,到时候会把笔记共享给大家。好了,下图就是我使用支持snappy压缩格式的版本进行测试的。
我们将上面的核心信息抽取如下:
- 压缩类型:.deflate 压缩时间: 文件大小: 解压时间:
- 压缩类型:.gz 压缩时间: 文件大小: 解压时间:
- 压缩类型:.bz2 压缩时间: 文件大小: 解压时间:
- 压缩类型:.lz4 压缩时间: 文件大小: 解压时间:
- 压缩类型:.lzo 压缩时间: 文件大小: 解压时间:
- 压缩类型:.snappy 压缩时间: 文件大小: 解压时间:
根据结果反推理论:(以上实验是对一个890M的文件进行处理,生成环境最好以实际生成环境为准,这个数据仅供参考!)
压缩时间从小到大:
lz4 < lzo < gz < snappy < deflate < bz2;
压缩大小从小到大:
defalte < gz < lz4 < bz2 < lzo < snappy;
解压时间从小到大:
zo < lz4 < deflate < gz < snappy < bz2;
Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例)的更多相关文章
- hadoop应用开发技术详解
<大 数据技术丛书:Hadoop应用开发技术详解>共12章.第1-2章详细地介绍了Hadoop的生态系统.关键技术以及安装和配置:第3章是 MapReduce的使用入门,让读者了解整个开发 ...
- 《Hadoop应用开发技术详解》
<Hadoop应用开发技术详解> 基本信息 作者: 刘刚 丛书名: 大数据技术丛书 出版社:机械工业出版社 ISBN:9787111452447 上架时间:2014-1-10 出版日期:2 ...
- 基础拾遗------redis详解
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
- 基础拾遗------webservice详解
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
- Hadoop Hive sql语法详解
Hadoop Hive sql语法详解 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件 ...
- VS2010开发程序打包详解
VS2010开发程序打包详解 转自:http://blog.sina.com.cn/s/blog_473b385101019ufr.html 首先打开已经完成的工程,如图: 下面开始制作安装程序包. ...
- AssetBundle打包详解
Unity5.x AssetBundle打包详解 在网上查看了很多资料,想详细搞清楚AssetBundle的原理.以实现符合项目需求的打包工具和加载逻辑 1. AssetBundle是什么? Asse ...
- Hadoop生态圈-Kafka配置文件详解
Hadoop生态圈-Kafka配置文件详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.默认kafka配置文件内容([yinzhengjie@s101 ~]$ more /s ...
- (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解
总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...
随机推荐
- YQCB冲刺周第六天
站立会议如上图 任务看板: 今天的任务为依旧为将用户记录的数据添加到数据库中,以及金额球的设置. 遇到的问题为金额球在jsp页面的显示.
- C# CHM帮助文档
1.生成chm文件 首先,下载EasyCHM软件,此软件可将HTML文件.TXT文件.图片和文件夹按照文件层次生成.chm文件.EasyCHM打开界面如图所示: 点击“新建”,选择需要生成.chm文件 ...
- 配置JDBC
在数据库和MyEclipse都安装好的情况下进行配置: 1.将JDBC(sqljdbc_4.0.2206.100_chs.exe)文件解压到C盘program files下面(也可以将解压后的文件Mi ...
- 实验二 四则运算 完成版 ver.1
package size; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JMenuBar; im ...
- java equals()方法的注意事项
1.在写代码的时候,我们有时候需要判断两个相同类的对象的值是否全部相等,很多人想到的就是equals()方法,但是equals方法真的是可以比较吗?其实equals方法比较的并不是两个对象的值,它只是 ...
- iOS- 利用AFNetworking3.0+(最新AFN) - 实现文件上传
官方建议AFN的使用方法 0.导入框架准备工作 •1. 将AFNetworking3.0+框架程序拖拽进项目 •2. 或使用Cocopod 导入AFNetworking3.0+ •3. 引入 ...
- IE8+SpringMVC文件上传防止JSON下载
今天在IE8测试文件上传的时候发现总是提示下载,原因是上传接口返回的是json,通过以下修改就可以保证返回是json并且不会出现下载的情况: @RequestMapping(value = " ...
- java poi给sheet表格中的某个单元格添加批注
Label l = , , "A cell with a comment"); WritableCellFeatures cellFeatures = new WritableCe ...
- 理解RESTful架构【转】
越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency).高 ...
- Python面向对象高级编程:__slot__(给实例添加方法、属性)
纲要: 本章总的来说是给实例添加属性,给类添加方法两个主题,以及相应的作用范围.总结如下: 1.给实例添加属性(作用范围:当然是只对当前实例有效): 2.用__slots__限制可以给实例添加的属性( ...