前端之家收集整理的这篇文章主要介绍了
java – 在HDFS上合并多个LZO压缩文件,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我在HDFS上有这样的结构:
/dir1
/dir2
/Name1_2015/
file1.lzo
file2.lzo
file3.lzo
/Name2_2015
file1.lzo
file2.lzo
Name1_2015.lzo
我想合并“dir2”中每个目录的每个文件,并将结果附加到/dir1/DirName.lzo中的文件
例如,对于/ dir1 / dir2 / Name1_2015,我想合并file1.lzo,file2.lzo,file3.lzo并将其附加到/dir1/Name1_2015.lzo
每个文件都是LZO压缩的.
我该怎么做 ?
谢谢
如果你不太在意并行性这里是一个bash一线:
for d in `hdfs dfs -ls /dir2 | grep -oP '(?<=/)[^/]+$'` ; do hdfs dfs -cat /dir2/$d/*.lzo | lzop -d | lzop | hdfs dfs -put - /dir1/$d.lzo ; done
您可以使用map-reduce并行提取所有文件.但是如何并行地从多个文件创建一个归档文件?据我所知,不可能同时从多个进程写入单个HDFS文件.所以我们不可能提出一个单一的节点解决方案.
原文链接:https://www.f2er.com/java/123625.html