【问题标题】:How can I add configuration files to a Spark job running in YARN-CLUSTER mode?如何将配置文件添加到以 YARN-CLUSTER 模式运行的 Spark 作业?
【发布时间】:2019-10-27 00:05:13
【问题描述】:

我使用的是 spark 1.6.0。我想使用 --files 标签上传文件并在初始化 spark 上下文后读取文件内容。

我的 spark-submit 命令语法如下所示:

spark-submit \
  --deploy-mode yarn-cluster \
  --files /home/user/test.csv \
  /home/user/spark-test-0.1-SNAPSHOT.jar

我阅读了 Spark 文档,它建议我使用 SparkFiles.get("test.csv") 但这在 yarn-cluster 模式下不起作用。 如果我将部署模式更改为 local,代码可以正常工作,但在 yarn-cluster 模式下会出现文件未找到异常。

我可以在日志中看到我的文件已上传到 hdfs://host:port/user/guest/.sparkStaging/application_1452310382039_0019/test.csv 目录并且 SparkFiles.get 正在尝试在 /tmp/test.csv 中查找不正确的文件。如果有人成功使用了这个,请帮我解决这个问题。

【问题讨论】:

  • 这个问题有一个针对 yarn-client 模式的原生答案。我已更新问题并将模式更改为 yarn-cluster。

标签: scala apache-spark


【解决方案1】:

Spark 提交命令

spark-submit \
  --deploy-mode yarn-client \
  --files /home/user/test.csv \
  /home/user/spark-test-0.1-SNAPSHOT.jar /home/user/test.csv

在主程序中读取文件

def main(args: Array[String]) {
    val fis = new FileInputStream(args(0));
    // read content of file
}

【讨论】:

  • 谢谢,我们如何在 yarn-cluster 模式下实现这一点
  • 把yarn-client改成yarn-cluster,一切照旧。
  • 我认为这行不通。我测试了它,它失败了。由于驱动程序运行在不同的节点上,它将无法读取本地文件。
猜你喜欢
  • 2015-08-02
  • 2016-11-05
  • 2015-12-05
  • 2022-01-26
  • 2016-01-18
  • 1970-01-01
  • 2016-01-23
  • 2015-07-14
  • 2016-09-05
相关资源
最近更新 更多