如何通过spark加载hdfs中存储的所有typesafe配置文件并解析/替换动态变量

ou6hu8tu  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(248)

我有一个job1.conf文件,它将指向sqlfile1.conf、sqlfile2.conf等job1.conf的示例

{
  queryfiles = [
   {
   file = "hdfs/path/sqlFile1.conf"
   }
   {
   file = "hdfs/path/sqlFile2.conf"
   }
  ]
}

sqlfile1.conf和sqlfile1.conf的示例内容

{
  q11 = """SELECT *
           FROM db1.table1 where load_dt ="""'${date}'

  q12 = "SELECT * from db1.table2"
}

sqlfile2.conf的示例内容

{
  q11 = """SELECT *
           FROM db2.table2 where load_dt ="""'${date}'

  q12 = "SELECT * from db2.table3"
}

我将job1.conf文件传递给--files,并能够使用typesafe configfactory解析该文件并创建一些case类

ConfigFactory.load()

在那之后,我从我的代码中引用存储在hdfs中的配置文件,如下所示

val reader = new InputStreamReader(fileSystem.open(new Path(sqlConfig.fileName)))
val config: Config = ConfigFactory.parseReader(reader)

我可以加载该文件,但它无法解析日期动态变量,因为我只通过spark submit传递job1.conf。

spark-submit \
--name ${appName} \
--master ${master} \
--deploy-mode client \
--conf "spark.driver.extraJavaOptions=-Dconfig.file=${/path/of/job1.conf} -Ddate=${jobRunDate}" \
--files ${/path/of/job1.conf}

如果从hdfs读取conf文件,如何解析date参数?
或者我可以通过spark submit传递所有配置文件吗?如果是这样,那么如何传递这些配置文件并解析日期参数?
或者我应该在“job1.conf”文件中包含sql配置文件吗?
包括“sqlfile1.conf”
包括“sqlfile2.conf”

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题