首页 > 解决方案 > 如何将配置文件添加到以 YARN-CLUSTER 模式运行的 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 中查找文件这是不正确的。如果有人成功使用了这个,请帮我解决这个问题。

标签: scalaapache-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
}

推荐阅读