【问题标题】:jdbc.SQLServerException: The "variant" data type is not supportedjdbc.SQLServerException:不支持“变体”数据类型
【发布时间】:2020-01-14 14:45:29
【问题描述】:

当我从 SQL Server 获取数据时,我使用 pyspark 2.4.4 我得到 com.microsoft.sqlserver.jdbc.SQLServerException: The "variant" data type is not supported.

需要做什么?来解决这个问题。我读了this。但是,我不明白。

编辑: 以下是我用来创建错误消息的代码:

for i in df['name']: mssql_df = spark.read.format("jdbc") \ 
.option("url", "jdbc:sqlserver://SERVERNAME:1433;databaseName=DB;integratedSecurity=true") \ 
.option("dbtable", "[" + i + "]") \ 
.option("driver", 'com.microsoft.sqlserver.jdbc.SQLServerDriver').load()

【问题讨论】:

  • 从 SQL Server 获取数据的代码是什么?
  • for i in df['name']: mssql_df = spark.read.format("jdbc") \ .option("url", "jdbc:sqlserver://SERVERNAME:1433;databaseName=DB;integratedSecurity=true") \ .option("dbtable", "[" + i + "]") \ .option("driver", 'com.microsoft.sqlserver.jdbc.SQLServerDriver').load()
  • 一些研究表明 JDBC 驱动程序不适用于 sql_variant 数据类型。我不知道如何解决这个问题,除了在您端找到 JDBC 的替代品或在服务器端找到 sql_variant 的替代品。我已经投票支持知名度,希望有人能尽快帮助你。
  • @Hoog re:“JDBC 驱动程序不适用于 sql_variant 数据类型” - 不正确。 This test code 工作得很好。

标签: python sql pyspark mssql-jdbc


【解决方案1】:

这个答案来得有点晚,但可能有助于将来寻找该错误的解决方案。 我只是将连接器从版本 6.1.0.jre8 升级到 8.1.0.jre8-preview 并解决了错误。

您可以在Maven Repository查看最新版本。

【讨论】:

  • 我只是更正了 sql server 的连接器版本 com.microsoft.sqlservermssql-jdbc9.2.1.jre8 运行时
【解决方案2】:

https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc mssql-jdbc 从 6.3.x 版本到当前都支持“变体”数据类型。您只需更新依赖项即可解决您的问题。

【讨论】:

    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    相关资源
    最近更新 更多