gpt4 book ai didi

hadoop - Xargs 命令不支持具有多个输入文件的 hadoop put 命令

转载 作者:可可西里 更新时间:2023-11-01 14:33:30 27 4
gpt4 key购买 nike

hadoop支持使用以下命令将多个本地文件复制到hdfs

hadoop fs -put localfile1 localfile2 /user/hadoop/hdfsdir

我们需要复制数十万个文件,由于内存问题,我们想使用 xargs 分块复制。

但是下面的命令给出了错误。

echo "localfile1 localfile2" |xargs  -t -I {} hadoop fs -put {} /user/hadoop/hdfsdir

它给出 put: unexpected URISyntaxException error

localfile1localfile2 是我当前工作目录中的文件。

单个文件命令正在运行,即

echo "localfile1" |xargs  -t -I {} hadoop fs -put {} /user/hadoop/hdfsdir

最佳答案

可能为时已晚,但我在尝试做同样的事情时遇到了你的问题。

我关注了这个tutorial并编写了以下命令来一次上传所有 4 个 texttiles:

find . -name '*.textile' -print0 |xargs  -0 -P 4 -I % hadoop fs -put % /user/myName/
  • -print0:做一个空分隔的标记列表
  • -0:所以xarg可以识别空分隔符
  • -n:多个 put 并行运行
  • -I: 以便将每个 token 包含到 hadoop fs -put TOKEN_GOES_HERE

我认为这种方法不尊重文件夹结构,这意味着您本地系统的文件夹结构不会保留在集群上。此外,如果您碰巧在多个文件夹中有文件名,您将得到文件已存在。

关于hadoop - Xargs 命令不支持具有多个输入文件的 hadoop put 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com