scala - 如何将配置文件添加到以 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 中查找文件这是不正确的。如果有人成功使用了这个,请帮我解决这个问题。
解决方案
火花提交命令
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
}
推荐阅读
- reactjs - 来自 v4 中字符串的 Antd 图标类型
- python - 为什么我的函数会部分改变我的 b 值?
- mongodb - 更改配置文件的 dbPath 后无法在 Windows 10 上启动 mongodb 网络服务
- windows - 无法运行无服务器。在输出中获取路径和“没有这样的文件或目录”
- javascript - 创建对象数组后如何更新对象的键值?JavaScript
- python - 错误“列表索引必须是整数或切片,而不是 str”是什么意思,我该如何解决?
- kotlin - 我想检查是否抛出了异常,但是发生了错误
- c - 如何使用带有(“r”和“w”)的fopen将一个.txt转移到另一个,并将“”替换为“\n”
- c# - Xamarin - Json 反序列化不适用于导出的 Android apk
- xml - Powershell 将我的 xml 文件格式从 UNIX (LF) UTF-8 更改为 Windows (CR LF) UTF-8-BOM