Apache spark 在GoogleDataProc中将conf文件添加到类路径
我们正在用HOCON配置在Scala中构建Spark应用程序,配置名为Apache spark 在GoogleDataProc中将conf文件添加到类路径,apache-spark,google-cloud-dataproc,hocon,Apache Spark,Google Cloud Dataproc,Hocon,我们正在用HOCON配置在Scala中构建Spark应用程序,配置名为application.conf 如果我将application.conf添加到jar文件并在Google Dataproc上启动一个作业,它将正常工作: gcloud dataproc作业提交spark\ --簇\ --jar=gs://.jar\ --地区=\ -- \ 我不想将application.conf与我的jar文件捆绑在一起,而是单独提供,这是我无法实现的 尝试了不同的事情,例如 使用--jars=gs://
application.conf
如果我将application.conf
添加到jar文件并在Google Dataproc上启动一个作业,它将正常工作:
gcloud dataproc作业提交spark\
--簇\
--jar=gs://.jar\
--地区=\
-- \
我不想将application.conf
与我的jar文件捆绑在一起,而是单独提供,这是我无法实现的
尝试了不同的事情,例如
--jars=gs:///application.conf
指定application.conf(应根据--files=gs:///application.conf
/tmp/
中的应用程序conf,然后使用file:///tmp/application.conf
--properties=spark.driver.extraClassPath=gs:///application.conf为spark定义extraClassPath
(对于执行者)
Exception in thread "main" com.typesafe.config.ConfigException$Missing: system properties: No configuration setting found for key 'xyz'
此错误通常表示HOCON配置中存在错误(HOCON中未定义键xyz
),或者application.conf
不在类路径中。由于在我的jar文件中使用的是完全相同的配置,所以我假设是后者
是否有其他选项可以将
应用程序.conf
放在类路径上?如果--jars
不能按照中的建议工作,您可以尝试。首先将配置上传到GCS,然后编写一个init操作将其下载到VMs,将其放入类路径中的文件夹中,或者更新spark-env.sh以包含配置的路径。谢谢,这为我指明了正确的方向!如果我理解正确,那么在创建集群或节点时,init操作只执行一次。对于application.conf,我们希望能够经常更改它。只有在创建集群时(通过--parameter),才能通过gcloud更改spark-env.sh,但在这里,我们可以定义一个文件夹,稍后将在其中保存所有配置,这应该是可行的。为了测试这一点,我手动将spark.driver.extraClassPath和spark.executor.extraClassPath添加到/etc/spark/conf.dist/spark-defaults.conf。现在它工作了!