У меня есть образец кода Spark, в котором я пытаюсь получить доступ к значениям для таблиц из конфигураций Spark, предоставленных параметром spark_conf, с помощью typeSafe application.conf и Spark Conf в пользовательском интерфейсе Databricks. Код, который я использую, приведен ниже:
Когда я нажимаю кнопку «Выполнить» в пользовательском интерфейсе Databricks, задание успешно завершается, но функция println печатает dummyValue вместо ThisIsTableAOne, ThisIsTableBOne ...
Из пользовательского интерфейса Spark я вижу, что конфигурации для TableNames передаются в задание Spark, но эти значения не отражаются в коде.
try {
val inputConfig = AppConfig.getConfig("input")
val outputConfig = AppConfig.getConfig("output")
val tableA = inputConfig.getString("tableA")
val tableB = inputConfig.getString("tableB")
val tableC = outputConfig.getString("tableC")
println(
s"""
|$tableA
|$tableB
|$tableC
|""".stripMargin)
val userDataInTable = sparkSession.createDataFrame(Seq(
(1, "dummy", "dummy", "dummy")
)).toDF("id", "col2", "col3", "col4")
userDataInTable.show(false)
println("Completed Entry ")
} catch {
case e: Exception =>
sparkSession.stop()
e.printStackTrace
}
//application.conf contains below text,
spark.tableNameA="dummyValue"
spark.tableNameB="dummyValue"
spark.tableNameC="dummyValue"
input{
tableA=${spark.tableNameA}
tableB=${spark.tableNameB}
}
output{
tableC=${spark.tableNameC}
}
//AppConfig
val appConfig = ConfigFactory.load("application.conf")
def getConfig(moduleName: String): Config = {
val config = appConfig.getConfig(moduleName)
config
}