Я считываю некоторые данные во фрейм данных с сервера Microsoft SQL, используя Spark JDBC. И когда таблица не существует (например, она была случайно удалена), я получаю исключение: com.microsoft.sqlserver.jdbc.SQLServerException: недопустимое имя объекта 'TestAllData'.
Я хотел бы создать какой-то механизм, чтобы сначала проверить, существует ли таблица, и только потом читать данные. Есть ли способ сделать это с помощью Spark JDBC?
Потому что я пытался использовать конструкцию if Существует с сервера SQL Ms, но он не работает для запросов с Spark.
В настоящее время мой код для чтения данных выглядит так:
def getDataQuery() = {
s"(select * from TestData) as subq"
}
def jdbcOptions(dataQuery: String, partitionColumn: String, lowerBound: String, upperBound: String, numPartitions: String) = Map[String,String](
"driver" -> config.getString("sqlserver.db.driver"),
"url" -> config.getString("sqlserver.db.url"),
"user" -> config.getString("sqlserver.db.user"),
"password" -> config.getString("sqlserver.db.password"),
"customSchema" -> config.getString("sqlserver.db.custom_schema"),
"dbtable" -> dataQuery,
"partitionColumn" -> partitionColumn,
"lowerBound" -> lowerBound,
"upperBound" -> upperBound,
"numPartitions" -> numPartitions
)
val dataDF = sparkSession
.read
.format("jdbc")
.options(jdbcOptions(getDataQuery()))
.load()