带有空格的Hadoop目录

问题描述 投票:1回答:4

我在为Hadoop提供包含空格的目录时遇到问题。

例如

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

Hadoop某种程度上不知道“文件夹名称”是文件夹名称,单词之间有空格。

我在执行此操作时收到以下错误

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

[此外,我尝试提供经过编码的URL。

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

但是仍然会抛出相同的错误。

有人知道解决方法吗?

感谢您的任何帮助。

java hadoop hdfs urlencode filenotfoundexception
4个回答
2
投票

用%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。


2
投票
输入目录路径中的

Hadoop不支持空格

在目录路径中用_首选分隔符替换空格


0
投票

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


0
投票
inputDir = "/abc/xyz/folder name/" 

必须工作

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

工作正常

© www.soinside.com 2019 - 2024. All rights reserved.