将存档文件提取到hdfs

bvpmtnay  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(400)

我想将(git存储库)存档提取到hdfs。
到目前为止我得到的是:

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

不幸的是,它只是将所有内容写入hdfs目录中的一个“-”文件,而不是将单独的文件放入它们应该访问的目录和子目录中。我看了一眼tar命令,但它似乎也没有做我想做的。
当然,我可以将tar提取到一个临时本地文件夹并从那里上传,但这并不是最优雅的解决方案。有什么简单而明显的东西我在这里遗漏了吗?

6tdlim6h

6tdlim6h1#

问题似乎是多个文件作为stdin输入。在档案室里翻查档案对我来说很管用。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

相关问题