Spark Shell无法在有效路径上读取文件

时间:2015-09-22 10:35:25

标签: scala shell apache-spark bigdata cloudera

我正在尝试在我的本地计算机上读取Cloudera的CentOS发行版附带的Spark Shell中的文件。以下是我在Spark Shell中输入的命令。

spark-shell
val fileData = sc.textFile("hdfs://user/home/cloudera/cm_api.py");
fileData.count

我也试过这个判断文件:

val fileData = sc.textFile("user/home/cloudera/cm_api.py");

但是我得到了

org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://quickstart.cloudera:8020/user/cloudera/user/cloudera/cm_api.py

我没有更改任何设置或配置。我究竟做错了什么?

5 个答案:

答案 0 :(得分:3)

您缺少网址中的前导斜杠,因此路径是相对的。要使其绝对,请使用

val fileData = sc.textFile("hdfs:///user/home/cloudera/cm_api.py")

val fileData = sc.textFile("/user/home/cloudera/cm_api.py")

答案 1 :(得分:1)

我认为您需要先将文件放入hdfs:hadoop fs -put,然后检查文件:hadoop fs -ls,然后转到spark-shellval fileData = sc.textFile("cm_api.py")

答案 2 :(得分:0)

"hdfs://user/home/cloudera/cm_api.py"中,您缺少URI的hostname。您应该传递类似"hdfs://<host>:<port>/user/home/cloudera/cm_api.py"的内容,其中<host>是Hadoop NameNode主机,<port>,Hadoop NameNode的端口号,{{ 1}}默认情况下。

答案 3 :(得分:0)

错误消息显示hdfs://quickstart.cloudera:8020/user/cloudera/user/cloudera/cm_api.py不存在。这条路看起来很可疑!您所说的文件可能是hdfs://quickstart.cloudera:8020/user/cloudera/cm_api.py

如果是,您可以使用该完整路径访问它。或者,如果默认文件系统配置为hdfs://quickstart.cloudera:8020/user/cloudera/,则只能使用cm_api.py

答案 4 :(得分:0)

您可能会对HDFS文件路径和本地文件路径感到困惑。通过指定

hdfs://quickstart.cloudera:8020/user/home/cloudera/cm_api.py
你说两件事:

1)有一台名为“quickstart.cloudera”的计算机可通过网络访问(尝试ping以确保是这种情况),并且它正在运行HDFS。

2)HDFS文件系统包含/user/home/cloudera/cm_api.py中的文件(尝试'hdfs dfs -ls / user / home / cloudera /'来验证这个

如果您尝试访问本地文件系统上的文件,则必须使用其他URI:

file:///user/home/cloudera/cm_api.py