2016-05-05 15 views
2

我有一个csv文件“test.csv”,我试图复制到集群上的所有节点。为什么“sc.addFile”和“spark-submit -files”不向所有工作人员分发本地文件?

我有一个4节点apache-spark 1.5.2独立群集。一个节点也有4名工作人员有主/司机以及工人。

如果我运行:

$SPARK_HOME/bin/pyspark --files=./test.csv OR从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的火花Web界面,显示工作运行和核心的所有节点,也没有分配其他警告或错误出现在控制台中。

+1

我相信每个工作者都会独立管理用户文件。日志行'Copying /local/path/to/test.csv(...)'只发生在驱动程序中。然后,每个工作人员将根据其配置将文件存储在不同的位置,并将其名称指向正确的位置。 –

+0

啊我以为它到处都使用确定性的文件夹结构,谢谢 – whisperstream

回答

2

正如丹尼尔所评论的,每个工作人员都以不同的方式管理文件。如果你想访问添加的文件,那么你可以使用SparkFiles.get(file)。如果你想看看你的文件目录是哪个目录,那么你可以打印输出SparkFiles.getDirectory

相关问题