簡體   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