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

如何将Hadoop目录压缩为单个gzip文件?,hadoop,compression,hdfs,gzip,hadoop-streaming,Hadoop,Compression,Hdfs,Gzip,Hadoop Streaming,我有一个目录,其中包含许多文件和子目录,我想将它们压缩并从hdfs导出到fs 我遇到了这个问题- ,但它似乎只与文件相关,使用hadoop流媒体和GzipCodec在目录方面没有成功 为什么要将HDFS文件夹压缩到单个gzip文件中,最有效的方法是什么? 提前感谢。您将需要一个库或滚动您自己的代码,以便从目录结构中的文件中生成tar流。您可以使用zlib压缩tar流以生成标准的.tar.gz文件 如果要合并多个此类任务的结果,我可以在这里提供两个技巧:1)可以连接gzip流以生成有效的gzip流

我有一个目录,其中包含许多文件和子目录,我想将它们压缩并从hdfs导出到fs

我遇到了这个问题- ,但它似乎只与文件相关,使用hadoop流媒体和GzipCodec在目录方面没有成功

为什么要将HDFS文件夹压缩到单个gzip文件中,最有效的方法是什么?

提前感谢。

您将需要一个库或滚动您自己的代码,以便从目录结构中的文件中生成tar流。您可以使用zlib压缩tar流以生成标准的.tar.gz文件


如果要合并多个此类任务的结果,我可以在这里提供两个技巧:1)可以连接gzip流以生成有效的gzip流;2)如果从非最终tar流中删除最后1024个零字节,则可以连接tar流以生成有效的tar流。

对于快速、肮脏的解决方案,对于那些不想使用hadoop流媒体或任何MapReduce作业的人,我将其作为传统文件系统使用,然后在其上执行操作。
请注意,您可能不想将此作为永久解决方案,而只是为了快速取胜:)
进一步阅读:
*

*

即使在Unix的FS上,也不能
gzip
a目录。您需要首先将其转换为
tar/har
或类似的格式,然后执行压缩。@philantrovert当然可以,但是您对如何执行有什么建议吗?我建议使用apache commons Api编写Java程序。它有类似于
TarArchiveOutputStream
的类,您可以查看这些类。