繁体   English   中英

如何从 Java Spark 应用程序中读取 app.properties 文件

[英]How to read app.properties file from Java Spark application

我实现了 Java Spark 应用程序,我使用 spark-submit 命令在 EMR 集群上运行该应用程序。 我想传递我在应用程序中使用的 app.properties。 app.properties 如下所示:

local_fetcher = false
local_storage = false
local_db = true
.
.
.

我希望能够在我的应用程序中获取这些数据。 我的问题是:

  1. app.properties 应该放在哪里?
  2. 如何在我的 Spark 应用程序中读取它的内容?
  3. 我应该能够从驱动程序和执行程序中读取它吗?

我尝试使用--properties-file标志,但我知道它会覆盖默认的 Spark 配置,这不是我想要的。 我看到我可能会使用--file标志,但不明白文件应该放在哪里以及如何在我的应用程序中读取它。

第一个选项:--files

--files FILES 逗号分隔的文件列表,放置在每个执行器的工作目录中。 这些文件在执行器中的文件路径可以通过 SparkFiles.get(fileName) 访问。

spark-submit --files /path/to/app.properties /path/to/your/fat/jar.jar

您可以使用SparkFiles获取上传文件的确切位置。

第二种选择:getResourceAsStream

将 app.properties 放入作业的 JAR 文件中,然后像这样加载它:

val appPropertiesStream = scala.io.Source.fromInputStream(
  classOf[yourObject].getClassLoader.getResourceAsStream("/app.properties")

val appPropertiesString = scala.io.Source.fromInputStream(appPropertiesStream ).mkString

(注意“app.properties”之前的正斜杠,据我所知它很重要)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM