java – 在HDFS上合并多个LZO压缩文件

前端之家收集整理的这篇文章主要介绍了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文件.所以我们不可能提出一个单一的节点解决方案.

猜你在找的Java相关文章