【问题标题】:How to handle white spaces in varchar not null column from azure synapse table to spark databricks如何处理 varchar not null 列中的空格从 azure synapse 表到 spark databricks
【发布时间】:2021-01-17 05:14:22
【问题描述】:

当我从 synapse 数据库中读取 spark 中的表(使用 azure databricks)时遇到问题。该表定义如下:

CREATE TABLE A
(
    [ID] [int] NOT NULL,
    [Value] [int] NOT NULL,
    [Description] [nvarchar](30) NOT NULL,
    
)

Description 字段可以为空白(即""),也可以包含空格。在突触中,我对这个字段没有任何问题,当我用 spark 读取表格时,也没有将其放入数据框。当我写df.show()df.count() 之类的东西时,问题就出现了。出现如下错误:

com.databricks.spark.sqldw.SqlDWSideException: Azure Synapse Analytics failed to execute the JDBC query produced by the connector.

Py4JJavaError: An error occurred while calling o1779.showString.
: com.databricks.spark.sqldw.SqlDWSideException: Azure Synapse Analytics failed to execute the JDBC query produced by the connector.

Underlying SQLException(s):
  - com.microsoft.sqlserver.jdbc.SQLServerException: Query aborted-- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 1 rows processed.
Column ordinal: 2, Expected data type: NVARCHAR(30) collate SQL_Latin1_General_CP1_CI_AS NOT NULL. [ErrorCode = 107090] [SQLState = S0001]

【问题讨论】:

    标签: apache-spark pyspark azure-databricks azure-synapse


    【解决方案1】:

    免责声明:四个月过去了,我认为您可能已经解决了这个问题或有解决方法。

    我遇到了同样的问题,这是 Databricks 在从 Synapse 读取时如何处理空字符串和空字符串的错误。快速解决方法是将 Synapse 表设置为允许空值(即将 NOT NULL 更改为 NULL)。尽管空字符串在设置为 NOT NULL 的 Synapse 字段中 100% 有效,但出于某种原因,Databricks 在从 Synapse 进行的完整读取期间应用验证,这会中断读取并导致失败。它知道 Synapse 架构,但不正确地理解和应用验证规则。由于 Spark 的延迟执行,您只会在执行 show() 或 count() 时看到这一点。请注意,我正在向 Databricks 提交此错误。

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 2021-10-22
      • 2021-09-05
      • 1970-01-01
      • 2021-12-24
      • 2021-12-15
      • 2022-10-05
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多