Spark / Hadoop无法读取根文件

时间:2018-02-19 17:10:42

标签: hadoop apache-spark

我试图通过spark来读取只有我(和root)可以读/写的文件夹内的文件,首先我用以下命令启动shell:

spark-shell --master yarn-client

然后我:

val base = sc.textFile("file///mount/bases/FOLDER_LOCKED/folder/folder/file.txt")
base.take(1)

并收到以下错误:

2018-02-19 13:40:20,835 WARN scheduler.TaskSetManager:
Lost task 0.0 in stage 0.0 (TID 0, mydomain, executor 1): 
java.io.FileNotFoundException: File file: /mount/bases/FOLDER_LOCKED/folder/folder/file.txt does not exist
at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:611)
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:824)
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:601)
...

我怀疑当用户hadoop启动了yarn / hadoop时,它无法在此文件夹中进一步获取该文件。我怎么能解决这个问题?

OBS:此文件夹无法向其他用户开放,因为它有私人数据。

EDIT1:这个/ mount / bases是一个使用cifs连接的网络存储。

EDIT2:hdfs和yarn已与用户hadoop

一起启动

2 个答案:

答案 0 :(得分:2)

由于hadoop是推出hdfs和yarn的用户,他是尝试在作业中打开文件的用户,因此必须被授权访问该文件夹,幸运的是,hadoop会检查用户首先执行作业允许访问文件夹/文件,因此您不会冒这个风险。

答案 1 :(得分:0)

好吧,如果它与文件存在访问相关的问题,那么您的访问权限将被拒绝'作为一个错误。在这种特殊情况下,我认为您尝试阅读的文件根本不存在,或者可能有其他名称[拼写错误]。只需检查文件名。