hadoop目录

rnmwe5a2  于 2021-06-04  发布在  Hadoop
关注(0)|答案(4)|浏览(495)

我在为hadoop提供包含空格的目录时遇到了一个问题。
例如

inputDir = /abc/xyz/folder name/abc.txt

hadoop不知何故不知道“foldername”是单词之间有空格的文件夹的名称。
我得到下面的错误,而这样做

java.io.FileNotFoundException: File does not exist: /abc/xyz/folder

此外,我还尝试提供url编码。

java.io.FileNotFoundException: File does not exist: /abc/xyz/folder%20name/abc.txt

但还是给了我同样的错误。
有人知道解决方法吗?
感谢您的帮助。

zysjyyx4

zysjyyx41#

尝试使用set(“path”,“//xyz/folder\name/.txt”)进行设置;请注意双反斜杠。

1cosmwyk

1cosmwyk2#

hadoop不支持输入目录路径中的空格。
将目录路径中的空格替换为\或首选分隔符。

kmbjn2e3

kmbjn2e33#

用%20替换空间对hadoop shell有效。如在

sed 's/ /\%20/g'

在实际的put命令中

hadoop fs -put "$inputDir" $putDest

如果没有%20,则会出现uri异常(这给了我在转义符上使用%20的线索\。)
我知道你是通过java做的。得到java.io.filenotfoundexception的事实让我想知道,代码是不是在用inputdir做其他事情,而不是仅仅作为hadoop put的参数或等效的put命令。如果它在hadoop命令之外对inputdir执行任何类型的检查,它将失败。java将其视为一条路径。hadoop将其视为uri。

y1aodyip

y1aodyip4#

inputDir = "/abc/xyz/folder name/"

必须工作

hadoop fs -ls "/abc/xyz/folder name/"

工作正常

相关问题