将存档解压缩到hdfs

时间:2015-10-28 15:33:20

标签: hadoop hdfs tar

我想将(git存储库)存档提取到hdfs。

这是我到目前为止所得到的:

git archive --format=tar --remote=[remote] master | \
    tar -xf - --to-stdout | \
    hadoop fs -put - /user/username/archivedir/

不幸的是,只需将所有内容写入一个" - "在hdfs目录中的文件,而不是将单独的文件放入他们应该去的目录和子目录中。 我看了一下tar -to-command,但它似乎也没有做我想做的事。

当然,我可以将tar解压缩到一个临时的本地文件夹并从那里上传,但这并不是我最优雅的解决方案。 有什么简单而明显的东西我在这里失踪吗?

1 个答案:

答案 0 :(得分:0)

问题似乎出在标准输入中有多个文件。遍历档案中的文件对我来说很有效。 Loop over files in tar.gz

脚本为:

#!/bin/bash
tar -xvf test.tar | while IFS= read -r f ; do
   echo -e "\n>>> Processing file $f"
   cat "$f" | hadoop fs -put - "data_dir/$f";
done