好,我目前有一个带有3个工作节点的火花集群。我还在/var/nfs
上安装了一个nfs服务器,并具有777
权限进行测试。我试图运行以下代码来计算文本中的单词:
root@master:/home/usuario# MASTER="spark://10.0.0.1:7077" spark-shell
val inputFile = sc.textFile("/var/nfs/texto.txt")
val counts = inputFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
counts.toDebugString
counts.cache()
counts.count()
counts.saveAsTextFile("/home/usuario/output");
但是火花给了我以下错误:
引起:java.io.IOException:Mkdirs无法创建 文件:在/ var / NFS /输出-4 / _temporary / 0 / _temporary / attempt_20170614094558_0007_m_000000_20 (exists = false,cwd = file:/ opt / spark / work / app-20170614093824-0005 / 2)
我搜索过很多网站,但我无法找到适用于我案例的解决方案。感谢所有的帮助。
答案 0 :(得分:0)
当您使用MASTER作为有效的应用程序主网址而不是local[*]
启动spark-shell时,spark会将所有路径视为HDFS;并仅在底层HDFS中执行IO操作;不在当地。
您已将位置安装在本地文件系统中;这些路径在HDFS中不存在。
这就是原因,错误是:exists=false
答案 1 :(得分:0)
与我有同样的问题。
再次检查目录的所有权。
sudo chown -R owner-user:owner-group directory