我想将(git存储库)存档提取到hdfs。
这是我到目前为止所得到的:
git archive --format=tar --remote=[remote] master | \
tar -xf - --to-stdout | \
hadoop fs -put - /user/username/archivedir/
不幸的是,只需将所有内容写入一个" - "在hdfs目录中的文件,而不是将单独的文件放入他们应该去的目录和子目录中。 我看了一下tar -to-command,但它似乎也没有做我想做的事。
当然,我可以将tar解压缩到一个临时的本地文件夹并从那里上传,但这并不是我最优雅的解决方案。 有什么简单而明显的东西我在这里失踪吗?
答案 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