【发布时间】:2025-12-26 17:10:11
【问题描述】:
我通过运行发送 Spark 作业以在远程集群上运行
spark-submit ... --deploy-mode cluster --files some.properties ...
我想通过 driver 代码读取some.properties 文件的内容,即在创建 Spark 上下文和启动 RDD 任务之前。该文件会复制到远程驱动程序,但不会复制到驱动程序的工作目录。
我知道的解决这个问题的方法是:
- 将文件上传到 HDFS
- 将文件存储在应用 jar 中
两者都不方便,因为这个文件在提交的开发机器上经常更改。
有没有办法读取在驱动程序代码主方法期间使用--files 标志上传的文件?
【问题讨论】:
-
您可以将文件放在集群上所有节点都可以访问的网络挂载上。这样,您就可以在驱动程序中从该挂载中读取。您可以公开一个返回文件的简单端点。这样你的驱动程序就可以进行 http 调用了。
-
确实如此,@AlexNaspo,但多余。该文件与驱动程序 jar 一起传输,并存储在服务器上的同一文件系统中,只是不在同一文件夹中。通过 HTTP再次发送它似乎很浪费。
-
如果你接受@AlexNaspo 的建议,那么你就不需要通过
--files传递属性文件,这样就不会多余了?
标签: apache-spark