如何将Hadoop目录压缩为单个gzip文件?

3
我有一个包含许多文件和子目录的目录,我希望将其压缩并从hdfs导出到fs。
我遇到了这个问题 - Hadoop:在HDFS中压缩文件? 但似乎只适用于文件,并且使用hadoop-streaming和GzipCodec无法成功处理目录。
将HDFS文件夹压缩为单个gzip文件的最有效方法是什么? 提前致谢。

1
即使在Unix的文件系统上,您也不能对目录执行gzip操作。您需要先将其转换为tar/har或类似格式,然后再进行压缩。 - philantrovert
@philantrovert 当然可以,但你有关于如何做到这一点的建议吗? - Elad Leev
我建议使用Apache Commons API编写Java程序。它有像TarArchiveOutputStream这样的类,你可以深入了解一下。 - philantrovert
2个回答

1
你需要使用一个库或自己编写代码,将目录结构中的文件制作成tar流。你可以使用zlib压缩tar流,以制作标准的.tar.gz文件。
如果你想合并多个这样的任务的结果,我可以提供两个提示:1) 你可以连接gzip流以制作有效的gzip流,2) 如果你从非最终tar流中删除最后1024个零字节,你可以连接tar流以制作有效的tar流。

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接