我有一个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”
暂无答案!
目前还没有任何答案,快来回答吧!