2015-04-08 55 views
1

我想将zip文件中的太多小文件(例如200k文件)从本地机器传输到HDFS。当我解压缩zip文件并将文件传输到HDFS时,需要很长时间。无论如何,我可以将原始zip文件转换为HDFS并将其解压缩到那里?将许多小文件传输到Hadoop文件系统

+0

为什么你会更快? –

+0

这需要通过hadoop dfs -put命令从本地计算机传输许多小文件。我收到了一些警告消息,因为它需要很长时间,而且我也会被亚马逊收取更多费用。在同一个文件系统上解压文件应该比从文件系统复制到另一个文件系统要快。 – Mohsen

回答

0

如果你的文件是GB的,那么这个命令肯定有助于避免空间不足的错误,因为不需要在本地文件系统上解压文件。

将命令放在hadoop支持从stdin读取输入。为了读取stdin的输入,使用' - '作为源文件。

压缩文件名:compressed.tar.gz

gunzip解-c compressed.tar.gz | hadoop fs -put -/user/files/uncompressed_data

只有缺点:这种方法的唯一缺点是在HDFS中,即使本地压缩文件包含多个文件,数据也会合并到单个文件中。

http://bigdatanoob.blogspot.in/2011/07/copy-and-uncompress-file-to-hdfs.html

+1

没错,但我想要HDFS上的单个文件,我不想合并它们。 – Mohsen