2015-05-29 174 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之類的東西,這些文件將被放在你的工作目錄中。