如何从java spark应用程序读取app.properties文件

b91juud3  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(272)

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

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

我希望能够在我的应用程序中获取这些数据。我的问题是:
app.properties应该位于哪里?
如何读取spark应用程序中的it内容?
我应该能够从驱动程序和执行程序中读取它吗?
我试着用 --properties-file 但我知道它将覆盖默认的Spark配置,这不是我想要的。我看到我可以用 --file 标记,但不知道文件应该位于何处,以及如何在应用程序中读取它。

1rhkuytd

1rhkuytd1#

第一个选项:--文件

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

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”前面的正斜杠,据我所知这很重要)

相关问题