【问题标题】:Why are "sc.addFile" and "spark-submit --files" not distributing a local file to all workers?为什么“sc.addFile”和“spark-submit --files”没有将本地文件分发给所有工作人员?
【发布时间】:2016-08-31 12:05:02
【问题描述】:

我有一个 CSV 文件“test.csv”,我正在尝试将其复制到集群上的所有节点。

我有一个 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 spark web 界面显示作业正在运行,并且在所有节点上分配了内核,控制台中也没有出现其他警告或错误。

【问题讨论】:

  • 我相信每个worker独立管理用户文件。日志行Copying /local/path/to/test.csv (...) 仅发生在驱动程序中。然后,每个工作人员将根据其配置将文件存储在不同的位置,并将其名称指向正确的位置。
  • 啊,我以为它到处都使用了确定性的文件夹结构,谢谢

标签: file apache-spark cluster-computing distribute


【解决方案1】:

正如 Daniel 所说,每个工作人员管理文件的方式都不同。如果要访问添加的文件,可以使用SparkFiles.get(file)。如果您想查看您的文件将转到哪个目录,则可以打印SparkFiles.getDirectory(现在为SparkFiles.getRootDirectory)的输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2021-09-20
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2012-09-30
    相关资源
    最近更新 更多