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

How to compress Hadoop directory to single gzip file?

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

我遇到了这个问题 - Hadoop: compress file in HDFS? ,但它似乎只与文件相关,并且使用 hadoop-streaming 和 GzipCodec 使我在目录方面没有成功。

为什么将 HDFS 文件夹压缩成单个 gzip 文件最有效?
提前致谢。

您将需要一个库或编写您自己的代码来从目录结构中的文件中创建 tar 流。您可以使用 zlib 压缩 tar 流以制作标准的 .tar.gz 文件。

如果您想合并多个此类任务的结果,我可以在此处提供两个花絮:1) 您可以连接 gzip 流以生成有效的 gzip 流,以及 2) 您可以连接 tar 流要创建有效的 tar 流 如果 从非最终 tar 流中删除最后的 1024 个零字节。

对于那些不想使用 hadoop-streaming 或任何 MapReduce 作业的快速、肮脏的解决方案,我使用 FUSE 然后将其作为传统文件系统执行操作。
请注意,您可能不想将其用作永久解决方案,只是为了快速取胜:)
延伸阅读:
* https://hadoop.apache.org/docs/r1.2.1/streaming.html
* http://www.javased.com/index.php?api=org.apache.hadoop.io.compress.GzipCodec