Как использовать конфигурацию Spark задания Databricks spark_conf? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть образец кода 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
    }
...