Я пытаюсь выяснить, как лучше всего поместить данные из фрейма данных (DF) в таблицу SQL Server. Вчера я провел некоторое исследование по этому вопросу и придумал это.
import com.microsoft.azure.sqldb.spark.config.Config
import com.microsoft.azure.sqldb.spark.connect._
// Aquire a DataFrame collection (val collection)
val config = Config(Map(
"url" -> "my_sql_server.database.windows.net",
"databaseName" -> "my_db_name",
"dbTable" -> "dbo.my_table",
"user" -> "xxxxx",
"password" -> "xxxxx",
"connectTimeout" -> "5", //seconds
"queryTimeout" -> "5" //seconds
))
import org.apache.spark.sql.SaveMode
DF.write.mode(SaveMode.Append).sqlDB(config)
Идея по этой ссылке.
https://docs.databricks.com/data/data-sources/sql-databases-azure.html#connect-to-spark-using-this-library
Все отлично работает, если я используюисходные заголовки DF, как порядковые позиции для имен полей (_c0, _c1, _c2 и т. д.). Я должен иметь эти имена полей в моей таблице, чтобы сделать эту работу. Очевидно, что это не устойчиво. Есть ли способ загрузить DF в таблицу без совпадения имен заголовков (порядок полей всегда будет одинаковым в DF и таблице). Или это лучший способ сделать это, например, переименовать имена полей Spark DF? Спасибо.