如何在Spring应用程序的Spark中读取具有给定前缀的所有属性文件?

时间:2018-07-27 10:02:19

标签: spring apache-spark spring-boot spring-framework-beans

我正在用spark和scala开发一个应用程序,并使用spring读取配置文件。

我的环境特定文件在该目录中可用,例如

  

src / main / resource / DEV

      mms_kafka.properties

      mms_app.properties

      pps_kafka.properties

      pps_app.properties

以及src / main / resoruce下的常见文件,如下所示:

  

src / main / resource

mmsmappings.properties 

ppsmappings.properties

目前,我的工作方式如下,并且工作正常

@PropertySource(value = Array("classpath:${ENV}/mms_app.properties","classpath:${ENV}/mms_kafka.properties","classpath:$mmsmapping.properties"), ignoreResourceNotFound=false)

Spark submit command: spark2-submit --master yarn --deploy-mode client --class job.Driver --conf 'spark.driver.extraJavaOptions=-DENV=DEV' --driver-memory 4g --executor-memory 16g --num-executors 4 --executor-cores 4  temp-0.0.1-shaded.jar 

但是我想读取特定前缀(mms / pps)的所有文件,如下所示,我尝试了一下,但是它给出了ENV并且APP占位符无法解析

@PropertySource(value = Array("classpath:${ENV}/${APP}_app.properties","classpath:${ENV}/${APP}_kafka.properties","classpath:${APP}mapping.properties"), ignoreResourceNotFound=false)


Spark submit command: spark2-submit --master yarn --deploy-mode client --class job.Driver --conf 'spark.driver.extraJavaOptions=-DENV=DEV' --conf 'spark.driver.extraJavaOptions=-DAPP=mms' --driver-memory 4g --executor-memory 16g --num-executors 4 --executor-cores 4  temp-0.0.1-shaded.jar

我该如何解决?

1 个答案:

答案 0 :(得分:0)

我通过在如下所示的spark作业中传递参数来解决了这个问题

spark2-submit --master yarn --deploy-mode client --class com.job.Driver --conf 'spark.driver.extraJavaOptions=-DENV=DEV -DAPP=mms' --driver-memory 4g --executor-memory 16g --num-executors 4  --executor-cores 4 test.jar