Наилучшая практика записи данных в таблицу SQL Server Azure? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь выяснить, как лучше всего поместить данные из фрейма данных (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? Спасибо.

1 Ответ

0 голосов
/ 09 октября 2019

Я нашел решение!

val newNames = Seq("ID", "FName", "LName", "Address", "ZipCode", "file_name")
val dfRenamed = df.toDF(newNames: _*)

dfRenamed.printSchema
...