Как загрузить через Spark все файлы конфигурации безопасного типа, хранящиеся в HDFS, а также разрешить / заменить переменную Dynami c - PullRequest
0 голосов
/ 09 июля 2020

У меня есть файл 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 и могу проанализировать этот файл с помощью типизированной ConfigFactory и создать несколько классов case

 ConfigFactory.load()

После этого я ссылаюсь на файлы конфигурации, хранящиеся в hdfs, из моего кода, как показано ниже

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

Я могу загрузить этот файл, но он не может разрешить динамическую дату c переменная, поскольку я передаю только job1.conf через spark-submit.

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}

Как мне разрешить параметр даты, если я читаю файл conf из hdfs?

ИЛИ могу ли я передать все файлы конфигурации через spark-submit? Если да, то как я могу передать эти файлы конфигурации и разрешить параметр даты?

ИЛИ включить файлы конфигурации SQL в файл «job1.conf»?

include «sqlFile1. conf "

включить" sqlFile2.conf "

...