我在hdfs中放置了一个名为Linecount2.txt的文本文件,并构建了一个简单的rdd来计算使用spark的行数。
val lines = sc.textFile("user/root/hdpcd/Linecount2.txt")
lines.count()
这很有效。
但是当我尝试使用上述路径的相同文本文件时,我收到错误:
"org.apache.hadoop.mapred.InvalidInputException: Input path does not exist:"
当我查看该路径时,我可以看到创建了一个文件夹'Linecount.txt'。现在该文件的路径是
("user/root/hdpcd/Linecount2.txt/Linecount2.txt")
然后,在定义路径后,我能够成功运行它。
第三次尝试这个时,我得到了同样的错误,因为输入路径不存在。
当我走过这条路时,
为什么会这样?
答案 0 :(得分:0)
将user/root/hdpcd/Linecount2.txt
的HDFS文件与/user/root/hdpcd/Linecount2.txt
进行比较之间存在差异,(或者更简单的是hdpcd/Linecount2.txt
,当您已经是root用户时)
如果要将文件放在当前用户帐户以外的绝对目录中,则前导斜杠非常重要,否则,这是默认值。
你没有给出你的hdfs put命令,但这里的问题只是绝对和相对路径之间的区别。而且,问题不是Spark特有的问题
此外,如果您尝试将文件放在同一位置,hdfs put
会说文件已存在,那么您上传两次的事实应该表明您的路径不正确