我有一个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
在主/驱动程序节点的单独窗口中,我可以使用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界面显示正在运行的作业和在所有节点上分配的核心,控制台中也没有出现其他警告或错误。
答案 0 :(得分:6)
正如Daniel评论的那样,每个工作者都以不同方式管理文件。如果要访问添加的文件,则可以使用SparkFiles.get(file)
。如果您想查看文件的目录,那么您可以打印SparkFiles.getDirectory
的输出(现在SparkFiles.getRootDirectory
)