Запись данных с помощью подключения JDBC к базе данных SQL Azure с помощью записной книжки Databricks кода Scala

Я пытаюсь вставить данные из таблицы кустов в таблицу базы данных SQL Azure. Таблица SQL DB уже существует, и я просто хочу перезаписать в нее данные с помощью следующего кода записи Scala JDBC. Этот код записывает данные в таблицу базы данных SQL, однако меняет ее DDL (типы данных / имена столбцов). Как мне этого избежать. Я хочу простую вставку на столе.

введите описание изображения здесь


person Aditya    schedule 29.04.2019    source источник
comment
spark.table(s"${SqlSchema}.${SqlTbl}").write.insertInto(s"${SqlSchema}.${SqlTbl}") производит такие же изменения в базовой схеме?   -  person emran    schedule 29.04.2019


Ответы (1)


Вы можете увидеть этот документ: Подключение к базам данных SQL с помощью JDBC . Он предоставляет вам несколько примеров о записывать данные в JDBC.

В этом разделе показано, как записывать данные в базу данных из существующей таблицы Spark SQL с именем diamonds.

%sql -- quick test that this test table exists
select * from diamonds limit 5

Следующий код сохраняет данные в таблице базы данных с именем diamonds. Использование имен столбцов, которые являются зарезервированными ключевыми словами, может вызвать исключение. В таблице в качестве примера есть столбец с именем table, поэтому вы можете переименовать его с помощью withColumnRenamed (), прежде чем отправлять его в JDBC API.

spark.table("diamonds").withColumnRenamed("table", "table_number")
     .write
     .jdbc(jdbcUrl, "diamonds", connectionProperties)

Spark автоматически создает таблицу базы данных с соответствующей схемой, определенной из схемы DataFrame.

Поведение по умолчанию - создать новую таблицу и выдать сообщение об ошибке, если таблица с таким именем уже существует. Вы можете использовать функцию Spark SQL SaveMode, чтобы изменить это поведение. Например, вот как добавить в таблицу больше строк:

import org.apache.spark.sql.SaveMode

spark.sql("select * from diamonds limit 10").withColumnRenamed("table", "table_number")
     .write
     .mode(SaveMode.Append) // <--- Append to the existing table
     .jdbc(jdbcUrl, "diamonds", connectionProperties)

Вы также можете перезаписать существующую таблицу:

spark.table("diamonds").withColumnRenamed("table", "table_number")
     .write
     .mode(SaveMode.Overwrite) // <--- Overwrite the existing table
     .jdbc(jdbcUrl, "diamonds", connectionProperties)

Надеюсь это поможет.

person Leon Yue    schedule 30.04.2019