java读取HDFS压缩文件乱码
java通过调用HDFS系统的FileSystem等API 直接读取HDFS的压缩文件会产生乱码
解决方法:
1.调用解码的API,解码后通过IO流处理。
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
boolean tag=fs.exists(new Path(args[0]));
String ftag=tag?"exist":"not exist";
logger.info("===>the HDFS File :"+ args[0] +"is "+ftag);
InputStream in=fs.open(new Path(args[0]));
//核心转换部分
CompressionCodecFactory factory = new CompressionCodecFactory(conf);
CompressionCodec codec = factory.getCodec(new Path(args[0]));
CompressionInputStream compin=codec.createInputStream(in);
BufferedReader br= new BufferedReader(new InputStreamReader(compin));
String line="";
while((line=br.readLine())!=null){
//TODO
}
//TODO 关闭流
}
2.文件不大的话,也可以hadoop fs -get xxxx,下载到本地解压后当成普通文件处理。
推荐使用第一种。
other
多个MR顺序执行时,中间如果结果较大几百G,可已使用
FileOutputFormat.setCompressOutput(job1, true);
FileOutputFormat.setOutputCompressorClass(job1, GzipCodec.class);
压缩比很高,可提高效率
java读取HDFS压缩文件乱码的更多相关文章
- 通过java读取HDFS的数据 (转)
原文链接:通过java读取HDFS的数据 通过JAVA直接读取HDFS中的时候,一定会用到FSDataInputStream类,通过FSDataInputStream以流的形式从HDFS读数据代码如下 ...
- java读取 500M 以上文件,java读取大文件
java 读取txt,java读取大文件 设置缓存大小BUFFER_SIZE ,Config.tempdatafile是文件地址 来源博客http://yijianfengvip.blog.163.c ...
- 使用JAVA API读取HDFS的文件数据出现乱码的解决方案
使用JAVA api读取HDFS文件乱码踩坑 想写一个读取HFDS上的部分文件数据做预览的接口,根据网上的博客实现后,发现有时读取信息会出现乱码,例如读取一个csv时,字符串之间被逗号分割 英文字符串 ...
- Java读取UTF-8格式文件第一行出现乱码——问号“?”及解决 And Java读带有BOM的UTF-8文件乱码原因及解决方法
測试样例: Java读取UTF-8的txt文件第一行出现乱码"?"及解决 test.txt文件内容: 1 00:00:06,000 --> 00:00:06,010 < ...
- Java实现添加压缩文件
package junittest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStr ...
- python读取文本txt文件乱码问题
python2的编码实在是个头疼的问题,编码问题也将作为一个长期的话题,遇到问题随时补充. 这次的问题比较简单,是在做词云wordcloud的时候发现的,作用就是从文本文件中读取文字,将其制作成词云. ...
- Spark- Spark从SFTP中读取zip压缩文件数据做计算
我们遇到个特别的需求,一个数据接入的流程跑的太慢,需要升级为用大数据方式去处理,提高效率. 数据: 数据csv文件用Zip 压缩后放置在SFTP中 数据来源: SFTP 数据操作: 文件和它的压缩包一 ...
- Java实现zip压缩文件的解压
需求描述: 前段时间写了一篇博客<Java实现对文本文件MD5加密并ftp传送到远程主机目录>,实现了一部分的业务需求.然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统 ...
- dlang 读取gz压缩文件
没找到打开gz压缩文件的标准库,暂时调用系统命令打开gz压缩文件(参考:https://dlang.org/phobos/std_process.html#.Redirect.stdoutToStde ...
随机推荐
- 1 datax 安装和简单使用
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableStore(O ...
- 明解C语言 入门篇 第九章答案
练习9-1 /* 将字符串存储在数组中并显示(其2:初始化) */ #include <stdio.h> int main(void) { char str[] = "ABC\0 ...
- 【More Effective C++ 条款4】非必要不提供default constructor
1)default constructor:在没有任何外来信息的情况下将对象初始化 2)但是有些对象如果没有外来信息,就没有办法完成初始化动作,那么这些对象,就没有必要提供default constr ...
- K8S的DNS服务
k8s集群部署完后第一件事就是要配置DNS服务,目前可选的方案有skydns, kube-dns, coredns kube-dns是k8s中的一个内置插件,目前作为一个独立的开源项目维护,见http ...
- .net文件上传的坑记录
传送门:https://www.cnblogs.com/akwwl/p/3573666.html 之前错误:使用layui与web uploader上传文件都报异常,后来终于找到原因是asp.net默 ...
- 【翻译】Tusdotnet中文文档(2)事件
tusdotnet-----一个tus文件上传协议的实现之事件 本章接上篇来继续翻译Tusdotnet的文档,按照如下结构来翻译: 事件 OnAuthorize OnFileComplete OnBe ...
- 数据库-io检测工具sqldeveloper-18.2.0.183.1748-x64 下载链接
链接:https://pan.baidu.com/s/1R0ujc_9aXdc5O5i1nhNAlA 提取码:o6is
- DevExpress的下拉框控件LookUpEdit的使用、添加item选项值、修改默认显示值
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- new的原理及实现
new的过程 // new运算的过程 /** * 1.创建一个空对象: * 2.该空对象的原型指向构造函数(链接原型):将构造函数的 prototype 赋值给对象的 __proto__属性: * 3 ...
- qt 子窗口内嵌到父窗口
类声明 动态申请子窗口类对象 ClassA *a = new ClassA(this); 隐藏边框 a->setWindowFlags(Qt::CustomizeWindowHint|Qt::F ...