Я пытаюсь прочитать данные из базы данных MSSQL, используя Spark jdbc с указанным смещением. Таким образом, данные должны быть загружены только после указанной временной отметки, которая будет смещением. Я попытался реализовать это, предоставив запрос в конфигурациях jdbc, однако я не нашел возможности создать подготовленный оператор с параметризованными значениями. В этом случае я хочу параметризировать смещение, которое будет меняться после каждого запуска приложения. Как я могу реализовать это, используя опции jdbc?
Все конфиги базы данных находятся в файле application.conf.
Вот как я читаю из базы данных:
def jdbcOptions(query: String) = Map[String,String](
"driver" -> config.getString("sqlserver.db.driver"),
"url" -> config.getString("sqlserver.db.url"),
"dbtable" -> s"(select * from TestAllData where update_database_time >= '2019-03-19 12:30:00.003') as subq,
"user" -> config.getString("sqlserver.db.user"),
"password" -> config.getString("sqlserver.db.password"),
"customSchema" -> config.getString("sqlserver.db.custom_schema")
)
val testDataDF = sparkSession
.read
.format("jdbc")
.options(jdbcOptions())
.load()
Вместо этого запрос должен выглядеть примерно так:
s"(select * from TestAllData where update_database_time >= $tmstp) as subq