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