我试图解压缩存储在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 ignored
,cat: Unable to write to output stream.
,Error: Could not find or load main class put
等错误。有什么帮助吗?
修改1 :我无法访问用户界面。因此,只允许命令行。 Unzip / gzip utils安装在我的hadoop机器上。我使用Hadoop 2.4.0
版本。
答案 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
编辑1/30/16:如果您使用hdfs ACL:在某些情况下,保险丝座不会遵守hdfs ACL,因此您将能够执行基本允许的文件操作unix访问权限。请参阅https://issues.apache.org/jira/browse/HDFS-6255,我最近要求重新打开的底部的评论。
答案 2 :(得分:0)
hadoop fs -put不支持从stdin读取数据
我尝试了很多东西并且会帮忙。我找不到hadoop的zip输入支持。所以它让我别无选择,只需将hadoop文件下载到本地fs,解压缩并再次上传到hdfs。
答案 3 :(得分:0)
要通过管道将数据流式传输到hadoop,您需要使用hdfs命令。
cat mydatafile | hdfs dfs -put - /MY/HADOOP/FILE/PATH/FILENAME.EXTENSION