加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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文件.所以我们不可能提出一个单一的节点解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读