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: unexpected URISyntaxException error
.
在这里 localfile1
以及 localfile2
是我当前工作目录中的文件。
单个文件命令正在工作,即。
echo "localfile1" |xargs -t -I {} hadoop fs -put {} /user/hadoop/hdfsdir
1条答案
按热度按时间ecr0jaav1#
可能太晚了,但我在尝试做同样的事情时遇到了你的问题。
我遵循本教程编写了以下命令,一次上载所有texttiles 4:
-print0:执行空分隔令牌列表
-0:所以xarg可以识别空分隔符
-n:好几个PUT并行运行
-i:所以每个令牌都包含在hadoop fs-put令牌中
我认为这种方法不尊重文件夹结构,这意味着本地系统的文件夹结构不会保留在集群上。另外,如果你碰巧有多个文件夹中的文件名,你会得到文件已经存在。