繁体   English   中英

如何处理天蓝色突触表中 varchar not null 列中的空白以激发数据块

[英]How to handle white spaces in varchar not null column from azure synapse table to spark databricks

当我从突触数据库读取 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]

免责声明:由于已经四个月了,我假设您可能已经解决了这个问题或有一个解决方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM