将conf文件添加到Google Dataproc中的classpath

时间:2019-10-04 14:22:29

标签: apache-spark google-cloud-dataproc hocon

我们正在使用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文件捆绑在一起,但要单独提供,我无法使用。

尝试了不同的事情,即

  1. --jars=gs://<bucketname>/application.conf指定application.conf(应该根据this answer工作)
  2. 使用--files=gs://<bucketname>/application.conf
  3. 与1. + 2.相同,应用程序conf位于群集的主实例上的/tmp/中,然后使用file:///tmp/application.conf指定本地文件
  4. 使用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放在类路径上?

1 个答案:

答案 0 :(得分:1)

如果--jars不能按照this answer的建议运行,则可以尝试init action。首先将您的配置上传到GCS,然后编写一个初始化操作以将其下载到VM,将其放置到类路径中的文件夹中,或者更新spark-env.sh以包含配置的路径。