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

Xargs命令不支持带有多个输入文件的hadoop put命令,hadoop,hdfs,xargs,Hadoop,Hdfs,Xargs,hadoop支持使用以下命令将多个本地文件复制到hdfs hadoop fs -put localfile1 localfile2 /user/hadoop/hdfsdir 我们需要复制数十万个文件,由于内存问题,我们希望使用xargs在chuncks中复制 但下面的命令给出了错误 echo "localfile1 localfile2" |xargs -t -I {} hadoop fs -put {} /user/hadoop/hdfsdir 它给出了put:意外的URISyntaxE

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

hadoop fs -put localfile1 localfile2 /user/hadoop/hdfsdir
我们需要复制数十万个文件,由于内存问题,我们希望使用xargs在chuncks中复制

但下面的命令给出了错误

echo "localfile1 localfile2" |xargs  -t -I {} hadoop fs -put {} /user/hadoop/hdfsdir
它给出了
put:意外的URISyntaxException错误

这里的
localfile1
localfile2
是我当前工作目录中的文件

单文件命令正在工作,即

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

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

我遵循这一点,编写了以下命令,一次上载所有texttiles 4:

find . -name '*.textile' -print0 |xargs  -0 -P 4 -I % hadoop fs -put % /user/myName/
  • -print0:执行空分隔令牌列表
  • -0:因此xarg可以识别空分隔符
  • -n:所以几个PUT是并行运行的
  • -I:所以每个令牌都包含在hadoop fs-put令牌中
我认为这种方法不尊重文件夹结构,这意味着本地系统的文件夹结构不会保留在集群上。此外,如果您碰巧在多个文件夹中有文件名,您将得到文件已经存在