Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在GoogleDataProc中将conf文件添加到类路径_Apache Spark_Google Cloud Dataproc_Hocon - Fatal编程技术网

Apache spark 在GoogleDataProc中将conf文件添加到类路径

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://

我们正在用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(应根据
  • 使用
    --files=gs:///application.conf
  • 与1+相同2.使用集群主实例上
    /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。现在它工作了!