首页 > 解决方案 > 将 conf 文件添加到 Google Dataproc 中的类路径

问题描述

我们正在使用 HOCON 配置在 Scala 中构建 Spark 应用程序,该配置名为application.conf.

如果我将 jar 添加application.conf到我的 jar 文件并在 Google Dataproc 上开始工作,它会正常工作:

gcloud dataproc jobs submit spark \
  --cluster <clustername> \
  --jar=gs://<bucketname>/<filename>.jar \
  --region=<myregion> \
  -- \
  <some options>

我不想将application.confjar 文件与我的 jar 文件捆绑在一起,而是单独提供,我无法正常工作。

尝试了不同的东西,即

  1. 指定 application.conf --jars=gs://<bucketname>/application.conf(应该根据这个答案工作)
  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 配置中有错误(密钥xyz未在 HOCON 中定义)或application.conf不在类路径中。由于在我的 jar 文件中使用完全相同的配置,因此我认为是后者。

是否有任何其他选项可以将其application.conf放在类路径中?

标签: apache-sparkgoogle-cloud-dataprochocon

解决方案


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


推荐阅读