为什么"sc.addFile"和"spark-submit --files"没有向所有工作人员分发本地文件?

whi*_*eam 6 file cluster-computing distribute apache-spark

我有一个csv文件"test.csv",我试图复制到群集上的所有节点.

我有一个4节点的apache-spark 1.5.2独立集群.有4个工人,其中一个节点也有主要/驱动程序以及工作人员.

如果我跑:

$SPARK_HOME/bin/pyspark --files=./test.csv 或者从REPL接口内执行 sc.addFile('file://' + '/local/path/to/test.csv')

我看到火花日志如下:

16/05/05 15:26:08 INFO Utils: Copying /local/path/to/test.csv to /tmp/spark-5dd7fc83-a3ef-4965-95ba-1b62955fb35b/userFiles-a4cb1723-e118-4f0b-9f26-04be39e5e28d/test.csv
16/05/05 15:26:08 INFO SparkContext: Added file file:/local/path/to/test.csv at http://192.168.1.4:39578/files/test.csv with timestamp 1462461968158
Run Code Online (Sandbox Code Playgroud)

在主/驱动程序节点的单独窗口中,我可以使用ls轻松找到文件,即(ls -al /tmp/spark-5dd7fc83-a3ef-4965-95ba-1b62955fb35b/userFiles-a4cb1723-e118-4f0b-9f26-04be39e5e28d/test.csv).

但是,如果我登录到工作者,则没有文件,/tmp/spark-5dd7fc83-a3ef-4965-95ba-1b62955fb35b/userFiles-a4cb1723-e118-4f0b-9f26-04be39e5e28d/test.csv甚至没有文件夹/tmp/spark-5dd7fc83-a3ef-4965-95ba-1b62955fb35b

但是apache spark web界面显示了所有节点上正在运行的作业和分配的核心,控制台中也没有出现其他警告或错误.

Jus*_*ony 6

正如Daniel评论的那样,每个工作者都以不同的方式管 如果要访问添加的文件,则可以使用SparkFiles.get(file).如果要查看文件所在的目录,则可以打印SparkFiles.getDirectory(现在SparkFiles.getRootDirectory)的输出