我尝试在群集上运行sc.texfile("file:///.../myLocalFile.txt")
,然后我对工作人员java.io.FileNotFoundException
。
所以我用Google搜索,我发现sc.addFile
/ SparkFiles.get
将文件上传到每个工作人员。
所以这是我的代码:
sc.addFile("file:///.../myLocalFile.txt")
val input = sc.textFile(SparkFiles.get("myLocalFile.txt"))
我看到驱动程序节点将文件上传到/tmp
中的目录,然后我的工作人员获取FileNotFoundException
,因为:
SparkFiles.get()
在驱动程序节点上运行,而不是工作者(我通过添加println
确认)。我尝试使用spark-submit --files
选项,我看到完全相同的问题。
那么我做错了什么?我想要的只是集群上的sc.textFile()
。
答案 0 :(得分:0)
您需要将worker上的文件复制到与驱动程序相同的路径,或者使用hdfs,因为它可以在worker上使用。工人没有这些文件,你可以去文件夹看看自己,我会scp他们
答案 1 :(得分:0)
sc.addFile不是为此目的。如果要通过sc读取文件,则需要将文件放在hdfs而不是使用sc.addFile