当前位置: 首页 > 知识库问答 >
问题:

无法覆盖spark中commmandline上的Typesafe配置

陶唯
2023-03-14

在默认情况下加载的src/main/resources文件夹中有一个类型安全配置application.conf

可以通过指定以下内容重写单个值:

--conf spark.driver.extraJavaOptions=-DsomeValue="foo"
spark-submit \
    --class my.Class \
    --master "local[2]" \
    --files foo.conf \
    --conf spark.driver.extraClassPath="-Dconfig.file=file:foo.conf" \
    --conf spark.driver.extraJavaOptions=-Dvalue="abcd" \
    job.jar

将无法加载foo.conf。相反,将加载resources文件夹中的原始文件。尝试以下技巧:在纱线上使用typesafe config和Spark也没有帮助。

当使用uberjar部署时,重写类型安全配置中的多个配置值似乎是普通(没有spark)程序的解决方案。问题仍然是如何使这一点产生火花。

同样通过的是:

--conf spark.driver.extraClassPath="-Dconfig.resource=file:foo.conf"
--conf spark.driver.extraClassPath="-Dconfig.resource=foo.conf"

https://github.com/lightbend/config用于使用application.{conf,json,properties}的应用程序,系统属性可用于强制使用不同的配置源(例如,来自命令行-dconfig.file=path/to/config-file):

  • config.resource指定资源名称--而不是基本名称,即application.conf而不是application
  • config.file指定文件系统路径,它同样应该包括扩展名,而不是baseName
  • config.url指定URL

这些系统属性指定application.{conf,json,properties}的替换,而不是添加。它们只影响使用默认configFactory.load()配置的应用程序。在替换配置文件中,可以使用include“application”包含原始默认配置文件;在include语句之后,您可以继续重写某些设置。

使用这些参数应该是可能的。

共有1个答案

狄钧
2023-03-14
spark-submit \
    --class my.Class \
    --master "local[2]" \
    --files foo.conf \
    --conf spark.driver.extraJavaOptions="-Dvalue='abcd' -Dconfig.file=foo.conf" \
    target/scala-2.11/jar-0.1-SNAPSHOT.jar

spark.driver.extraclasspath更改为spark.driver.extracjavaoptions就能起到作用

 类似资料:
  • 我有一个从配置文件读取数据的Spark作业。此文件是一个类型安全配置文件。 我要使用的外部application.conf的内容如下所示: 此application.conf文件存在于我的本地计算机文件系统中(而不是HDFS上) 我用的是Spark1.6.1和纱线 提前致谢

  • 问题内容: 我尝试按照食谱中的描述自定义行为。 在ipython中: 没有被调用。看来在我的python 2.5安装中不起作用。 问题答案: 使用的是ipython,而不是普通的Python交互式shell,它本身捕获所有异常,并且不使用sys.excepthook。以代替just的方式运行它,它将在未捕获的异常时自动调用pdb,就像您尝试使用excepthook一样。

  • 背景: Centos7 Hadoop-2.7.3 spark-2.0.1-bin-hadoop2.7 apache-hive-2.1.0-bin(仅用于启动由配置单元启动的转移服务--service转移服务) 配置了HADOOP_HOME、SPARK_HOME和HIVE_HOME等 MySQL 5.7.16 已将mysql-connector-java-5.1.40-bin.jar放入hive/l

  • 我正在与AWS工作,我有使用Spark和Hive的工作流。我的数据是按日期分区的,所以每天我的S3存储中都有一个新分区。我的问题是,当有一天加载数据失败时,我不得不重新执行那个分区。接下来编写的代码是: 在我的流动中发生了什么?如果我使用savemode.overwrite,完整的表将被删除,并且只保存分区。如果我使用savemode.append,我可能会有重复的数据。 我想要的是:在表中,分区

  • 注意:这里有几个人引用的解决方案不适用于我的问题。。。 我有一个java。sql。要在getter中格式化为字符串的时间戳字段。我在课程开始时使用Lombok@Data。但是,当我用自己的getter覆盖Lombok的getter(格式化时间戳)时,字段总是空的。我在文档中没有看到任何东西来解释这种行为。 这段代码将结算日期作为时间戳提供给我: 这个代码块给了我一个NPE,因为setementDa

  • 我正在编写一个spark应用程序,并使用sbt assembly创建一个fat jar,我可以将其发送到spark-submit(通过Amazon EMR)。我的应用程序使用typesafe-config,在我的目录中有一个文件。我的jar在Amazon S3上,我使用命令创建一个新的spark作业(将jar下载到集群并发送到spark-submit)。我知道,一般来说,我可以使用来覆盖这些设置。