У меня есть файл 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 "