采用文件流写HDFS大文件
来源:互联网 发布:mac玲珑加速器装不进去 编辑:程序博客网 时间:2024/05/16 18:30
最近有个需求,要把笔记本上的一个近30GB的文件写到HDFS上去。无奈虚拟机服务器的本地硬盘都只有20GB的容量,原始文件无法采用copyFromLocal。试了一下笔记本通过copyFromLocal写到HDFS,无奈龟速。最后想到一个办法:
- 压缩文件,gz文件大概到7G的样子;
- 拷贝gz文件至服务器vm1;
- 在vm1上写程序,读取gz文件数据流,写到HDFS文件上去;
结果看起来还不错,代码如下:
import java.io.FileInputStreamimport java.util.zip.GZIPInputStreamimport java.io.Fileimport org.apache.hadoop.fs.FileSystemimport org.apache.hadoop.conf.Configurationimport org.apache.hadoop.fs.Pathimport java.net.URIobject CopyZipFile { def main(args: Array[String]) = { val fn = args(0); val hfn = args(1); println(s"open file: $fn, save file: $hfn"); val in = new FileInputStream(new File(fn)); val conf = new Configuration(); val fs = FileSystem.get(URI.create(hfn), conf); val out = fs.create(new Path(URI.create(hfn))); val ungzip = new GZIPInputStream(in); var buffer = new Array[Byte](102400); var n = 0; while (n >= 0) { n = ungzip.read(buffer); if (n >= 0) out.write(buffer, 0, n); } out.close(); in.close; }}
代码一般,记下来,没准会有一点参考价值。第一次真心体会到gzip数据流的优势,哈哈~~
由于这是个maven项目,最后在服务器上的执行命令是:
mvn exec:java -Dexec.mainClass="CopyZipFile" -Dexec.args="/root/dblp.rdf.gz hdfs://vm122:9000/dblp.rdf"
阅读全文
0 0
- 采用文件流写HDFS大文件
- HDFS写文件解析
- HDFS写文件解析
- hdfs写文件过程
- HDFS写文件解析
- HDFS写文件过程
- hdfs写文件流程
- HDFS dfsclient写文件过程
- HDFS写文件过程分析
- HDFS写文件过程分析
- HDFS写文件过程分析
- 【Hadoop--03】HDFS写文件
- 大数据学习篇:hadoop深入浅出系列之HDFS(三) ——HDFS读文件和写文件
- hadoop源码 - HDFS的文件操作流 写操作(客户端)
- java写大文件
- 大文件写:
- HDFS dfsclient写文件过程 源码分析
- HDFS dfsclient写文件过程 源码分析
- Datatable报错Uncaught TypeError: Cannot read property 'style' of undefined
- 使用JS写一个计算器练习
- iOS SAX 、DOM 、XML解析区别笔记
- 淘淘商城系列——利用拦截器实现登录功能及订单确认页面展示
- 在csdn的第一篇博客!
- 采用文件流写HDFS大文件
- okhttp入门
- 发工资咯:) HDU
- python 创建pdf文件并支持中文 reportlab
- kafka0.8和1.0整合sparkstreaming
- PYTHON ANACONDA装FFMPEG imagemagick
- Java包命名规则
- Ubuntu1404下安装GCC 4.7.x
- Redis常用命令