我们正在使用HOCON配置在Scala中构建一个Spark应用程序,该配置称为application.conf
。
如果我将application.conf
添加到我的jar文件中并在Google Dataproc上启动作业,则它可以正常工作:
gcloud dataproc jobs submit spark \
--cluster <clustername> \
--jar=gs://<bucketname>/<filename>.jar \
--region=<myregion> \
-- \
<some options>
我不想将application.conf
与jar文件捆绑在一起,但要单独提供,我无法使用。
尝试了不同的事情,即
--jars=gs://<bucketname>/application.conf
指定application.conf(应该根据this answer工作)--files=gs://<bucketname>/application.conf
/tmp/
中,然后使用file:///tmp/application.conf
指定本地文件extraClassPath
(和执行者)为火花定义--properties=spark.driver.extraClassPath=gs://<bucketname>/application.conf
使用所有这些选项时,我得到一个错误,它无法在配置中找到密钥:
Exception in thread "main" com.typesafe.config.ConfigException$Missing: system properties: No configuration setting found for key 'xyz'
此错误通常意味着HOCON配置中存在错误(HOCON中未定义键xyz
)或application.conf
不在类路径中。由于在jar文件中使用完全相同的配置时,我认为是后者。
是否还有其他选择可以将application.conf
放在类路径上?
答案 0 :(得分:1)
如果--jars
不能按照this answer的建议运行,则可以尝试init action。首先将您的配置上传到GCS,然后编写一个初始化操作以将其下载到VM,将其放置到类路径中的文件夹中,或者更新spark-env.sh以包含配置的路径。