java – 在HDFS上合并多个LZO压缩文件
发布时间:2020-12-14 05:04:30 所属栏目:Java 来源:网络整理
导读:假设我在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_
假设我在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文件.所以我们不可能提出一个单一的节点解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |