如何在hadoop中解压缩文件?

时间:2015-03-17 06:58:12

标签: hadoop

我试图解压缩存储在Hadoop文件系统中的zip文件,&将它存储在hadoop文件系统中。我尝试了以下命令,但没有一个能够工作。

hadoop fs -cat /tmp/test.zip|gzip -d|hadoop fs -put - /tmp/
hadoop fs -cat /tmp/test.zip|gzip -d|hadoop fs -put - /tmp
hadoop fs -cat /tmp/test.zip|gzip -d|hadoop put - /tmp/
hadoop fs -cat /tmp/test.zip|gzip -d|hadoop put - /tmp

当我运行这些命令时,终端上出现gzip: stdin has more than one entry--rest ignoredcat: Unable to write to output stream.Error: Could not find or load main class put等错误。有什么帮助吗?

修改1 :我无法访问用户界面。因此,只允许命令行。 Unzip / gzip utils安装在我的hadoop机器上。我使用Hadoop 2.4.0版本。

4 个答案:

答案 0 :(得分:5)

要解压缩gzip(或bzipped)文件,我使用以下

hdfs dfs -cat /data/<data.gz> | gzip -d | hdfs dfs -put - /data/ 

如果文件位于本地驱动器上,则

zcat <infile> | hdfs dfs -put - /data/

答案 1 :(得分:2)

我大部分时间都使用hdfs保险丝支架

所以你可以做到

$ cd /hdfs_mount/somewhere/
$ unzip file_in_hdfs.zip

http://www.cloudera.com/content/www/en-us/documentation/archive/cdh/4-x/4-7-1/CDH4-Installation-Guide/cdh4ig_topic_28.html

编辑1/30/16:如果您使用hdfs ACL:在某些情况下,保险丝座不会遵守hdfs ACL,因此您将能够执行基本允许的文件操作unix访问权限。请参阅https://issues.apache.org/jira/browse/HDFS-6255,我最近要求重新打开的底部的评论。

答案 2 :(得分:0)

  1. gzip使用-c从stdin读取数据
  2. hadoop fs -put不支持从stdin读取数据

    我尝试了很多东西并且会帮忙。我找不到hadoop的zip输入支持。所以它让我别无选择,只需将hadoop文件下载到本地fs,解压缩并再次上传到hdfs。

答案 3 :(得分:0)

要通过管道将数据流式传输到hadoop,您需要使用hdfs命令。

cat mydatafile | hdfs dfs -put - /MY/HADOOP/FILE/PATH/FILENAME.EXTENSION