如何将配置文件添加到以YARN-CLUSTER模式运行的Spark作业?

时间:2018-06-19 03:40:41

标签: scala apache-spark

我正在使用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 中查找文件,这是不正确的。如果有人成功使用了这个,请帮我解决这个问题。

1 个答案:

答案 0 :(得分: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
}