首页 > 解决方案 > Azure Databricks BulkMoveToSql 日期/时间转换问题

问题描述

我有一个 Spark / Databricks 作业,它将数据从数据块文件系统(AVRO 文件)移动到 Azure SQL 数据库中。使用 JDBC 执行此操作很好(从文件存储读取数据帧,将其写入 JDBC 目标),但速度有点慢。

Microsoft 提供了具有批量复制功能的 SQLDB Spark 驱动程序。如果我使用这个驱动程序并调用 .write() 方法,一切都会按预期工作:

df.write.mode(SaveMode.Overwrite).sqlDB(bulkCopyConfig)

但是,如果我使用批量复制:

df.bulkCopyToSqlDB(bulkCopyConfig)

似乎驱动程序没有正确处理日期字段:

om.microsoft.sqlserver.jdbc.SQLServerException:从字符串转换日期和/或时间时转换失败。

我已经验证了数据框架构和表元数据是“正确的”或至少符合预期;.write() 方法创建的表布局为日期值选择 Azure SQL 日期时间字段,因此我在为 bulkCopy 准备表时使用了相同的结构(.write() 将创建一个表,.bulkCopyToSqlDB 似乎想要表已经存在)。

关于如何让 bulkCopy 正确解释/转换日期的任何想法?我是否需要先将它们转换为不同格式的数据框中的字符串?

标签: sqlazureapache-sparkdatabricks

解决方案


推荐阅读