接上篇:使用Hadoop API 压缩HDFS文件

  压缩完了,当然需要解压缩了。

  直接上代码:

  

private static void getFile(String filePath) throws IOException, ClassNotFoundException {

        FileSystem fs = FileSystem.get(URI.create(filePath), HDFSConf.getConf());
Path path = new Path(filePath);
if (fs.exists(path) ) { FSDataInputStream in;
FSDataOutputStream out;
Path outPath; FileStatus file = fs.getFileStatus(path);
// 该压缩方法对应的文件扩展名 outPath = new Path(filePath.substring(0,filePath.indexOf(".")) + ".new");
logger.info("out put path is : " + outPath.toString()); if (fs.createNewFile(outPath)) { CompressionCodecFactory factory = new CompressionCodecFactory(HDFSConf.getConf());
CompressionCodec codec = factory.getCodec(file.getPath());
in = fs.open(file.getPath());
InputStream cin = codec.createInputStream(in);
logger.info("create file : " + outPath.toString()); out = fs.append(outPath); // 缓冲区设为5MB
IOUtils.copyBytes(cin, out, 1024 * 1024 * 5, false); out.flush();
cin.close();
in.close();
out.close(); logger.info("Decompress file successful");
} else {
logger.error("File exists");
} } else {
logger.info("There is no file :" + filePath);
} }

打包执行:  

[hadoop@venn05 venn]$ java -cp compressHdfsFile-1.0-SNAPSHOT.jar com.utstarcom.hdfs.DeCompressFile /aaa/test/viewlog_20180402.log.gz
-- ::44.562 [Common.java] [main]
INFO : start init :
-- ::44.566 [Common.java] [main]
INFO : properties path : /opt/hadoop/tmp/venn/
/opt/hadoop/tmp/venn/hdfs.properties
default.compress.format
hdfs.uri
-- ::44.568 [Common.java] [main]
INFO : get System enviroment :
-- ::44.569 [Common.java] [main]
INFO : properties path : {hdfs.uri=hdfs://venn06:8020, default.compress.format=bz2}
hdfs://venn06:8020/aaa/test/viewlog_20180402.log.gz
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
-- ::46.409 [DeCompressFile.java] [main]
INFO : out put path is : hdfs://venn06:8020/aaa/test/viewlog_20180402.new
-- ::46.623 [DeCompressFile.java] [main]
INFO : create file : hdfs://venn06:8020/aaa/test/viewlog_20180402.new
-- ::24.566 [DeCompressFile.java] [main]
INFO : Decompress file successful
cost :
39 s

 文件大小: 249.4 M ,解压后大小:1.4 G,执行时间  39 s,很不错

文件大小:
[hadoop@ut01 venn]$ hadoop fs -ls /aaa/test/
// :: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found items
-rw-r--r-- hadoop supergroup -- : /aaa/test/viewlog_20180402.log
-rw-r--r-- hadoop supergroup -- : /aaa/test/viewlog_20180402.log.gz
-rw-r--r-- hadoop supergroup -- : /aaa/test/viewlog_20180402.new
[hadoop@ut01 venn]$ hadoop fs -ls -h /aaa/test/
// :: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found items
-rw-r--r-- 3 hadoop supergroup 1.4 G 2018-06-03 17:07 /aaa/test/viewlog_20180402.log
-rw-r--r-- 3 hadoop supergroup 249.4 M 2018-06-09 15:46 /aaa/test/viewlog_20180402.log.gz
-rw-r--r-- 3 hadoop supergroup 1.4 G 2018-06-09 15:43 /aaa/test/viewlog_20180402.new

 项目地址:码云

使用Hadoop API 解压缩 HDFS文件的更多相关文章

  1. 使用Hadoop API 压缩HDFS文件

    下篇解压缩:使用Hadoop API 解压缩 HDFS文件 起因: 集群磁盘剩余空间不足. 删除了存储在HDFS上的,一定时间之前的中间结果,发现并不能释放太多空间,查看计算业务,发现,每天的日志存在 ...

  2. JAVA API 实现hdfs文件操作

    java api 实现hdfs 文件操作会出现错误提示: Permission denied: user=hp, access=WRITE, inode="/":hdfs:supe ...

  3. Hadoop API:遍历文件分区目录,并根据目录下的数据进行并行提交spark任务

    hadoop api提供了一些遍历文件的api,通过该api可以实现遍历文件目录: import java.io.FileNotFoundException; import java.io.IOExc ...

  4. java Api 读取HDFS文件内容

    package dao; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java ...

  5. Hadoop如何修改HDFS文件存储块大小

    一. 临时修改可以在执行上传文件命令时,显示地指定存储的块大小.1. 查看当前 HDFS文件块大小我这里查看HDFS上的TEST目录下的jdk-7u25-linux-x64.gz  文件存储块大小.1 ...

  6. 使用java api操作HDFS文件

    实现的代码如下: import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import ...

  7. hadoop学习记录--hdfs文件上传过程源码解析

    本节并不大算为大家讲接什么是hadoop,或者hadoop的基础知识因为这些知识在网上有很多详细的介绍,在这里想说的是关于hdfs的相关内容.或许大家都知道hdfs是hadoop底层存储模块,专门用于 ...

  8. Structure Streaming和spark streaming原生API访问HDFS文件数据对比

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Structure Stream访问方式 code examples import org.apache.sp ...

  9. 用java api读取HDFS文件

    import java.io.IOException; import java.io.InputStream; import java.security.PrivilegedExceptionActi ...

随机推荐

  1. centos 6 和centos 7 系统下vnc配置

    一. VNC 服务的大概介绍: VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的. ...

  2. ES6之扩展运算符

    一 将数组转换为用逗号分隔的参数序列 let turtles = ['Leo','Raph','Mikey','Don']; console.log(...turtles); 二 在解构赋值时使用 l ...

  3. 退出vim

    不保存修改的退出方法: 先按esc,再依次按下:q!,最后按回车. 保存修改的退出方法: 先按esc,再依次按下:wq,最后按回车.

  4. Django的CBV的学习

    之前我们在路由匹配的时候,一个url对应一个函数,其实我们还可以一个url对应一个类,这个就是CBV,下面我们来简单的介绍一下CBV 一.CBV的基本用法 1.在路由匹配中要这样写,class_log ...

  5. 微信小程序基础架构

    一个微信小程序界面由一个页面描述文件,一个页面逻辑文件,一个样式表文件来进行描述 在主目录中的三个以app开头的文件就是微信小程序的主描述文件 app.js :主逻辑文件,用来注册小程序 app.js ...

  6. windows核心编程

    第一章 函数返回值: void:不可能失败.极少数会返回VOID BOOL:失败返回0 HANDLE:失败会返回NULL 或INVALID_HANDLE_VALUE PVOID:失败返回NULL wa ...

  7. SSH异常“Failed to start OpenSSH Server daemon”

    [root@bogon yum]# systemctl status sshd.service● sshd.service - OpenSSH server daemon   Loaded: load ...

  8. thinkphp3.2集成QRcode生成二维码

    一.下载QRcode源代码 https://sourceforge.net/projects/phpqrcode/files/releases/ 使用phpqrcode必须开启GD2扩展,phpqrc ...

  9. JFinal Web开发学习(五)注册界面和后端验证

    效果: 直接点击注册后 : 后端验证是可靠地,前端js验证是不可靠的.只需要在浏览器删除js验证代码即可突破js验证. 1.注册界面 在WebRoot下新建regist.jsp <%@ page ...

  10. 梦殇 chapter two

    梦殇 chapter two 早晨,推开门.一缕阳光照进来. 今天的天气并不像往日,少了些往日的寒冷与萧瑟.阳光照耀着大地,暖暖的.已经好久见不到太阳了.最近雾气渐入这座城市,使它全部笼罩在阴阴的雾气 ...