2015-05-29 127 views
3

我很难搞清楚Spark为什么不访问我添加到上下文中的文件。下面是我在REPL代码:在Spark中读取文件时出错

scala> sc.addFile("/home/ubuntu/my_demo/src/main/resources/feature_matrix.json") 

scala> val featureFile = sc.textFile(SparkFiles.get("feature_matrix.json")) 

featureFile: org.apache.spark.rdd.RDD[String] = /tmp/spark/ubuntu/spark-d7a13d92-2923-4a04-a9a5-ad93b3650167/feature_matrix.json MappedRDD[1] at textFile at <console>:60 

scala> featureFile.first() 
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: cfs://172.30.26.95/tmp/spark/ubuntu/spark-d7a13d92-2923-4a04-a9a5-ad93b3650167/feature_matrix.json 

文件是否确实在/tmp/spark/ubuntu/spark-d7a13d92-2923-4a04-a9a5-ad93b3650167/feature_matrix.json

赞赏任何帮助存在。

+0

您的集群是本地还是远程的? – Odomontois

+0

我也面临同样类型的问题。 – Kaushal

+0

该群集是远程的。 – worker1138

回答

1

如果您使用的是addFile,那么您需要使用get来检索它。此外,addFile方法是懒惰的,所以它很可能没有放在您找到它的位置,直到您实际调用first,因此您正在创建这种类型的圆。

所有的说法,我不知道使用SparkFiles作为第一个行动将是一个聪明的想法。使用--filesSparkSubmit之类的东西,这些文件将被放在你的工作目录中。