Polybase - 从外部源读取时达到最大拒绝阈值(0 行):处理的总共 1 行中拒绝了 1 行

Nic*_*SFT 3 azure azure-synapse

[客户提问]

我在文本文件中有以下数据。由 | 分隔

A | null , ZZ
C | D
Run Code Online (Sandbox Code Playgroud)

当我使用 HDInsight 运行此查询时:

CREATE EXTERNAL TABLE myfiledata(
col1 string,
col2 string
)
row format delimited fields terminated by '|' STORED AS TEXTFILE LOCATION 'wasb://.....';
Run Code Online (Sandbox Code Playgroud)

我得到了预期的以下结果:

A     null , ZZ
C     D
Run Code Online (Sandbox Code Playgroud)

但是当我使用 SQL DW Polybase 运行相同的查询时,它会抛出错误:

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.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?这是我在 SQL DW 中的脚本:

-- Creating external data source (Azure Blob Storage) 
CREATE EXTERNAL DATA SOURCE azure_storage1
WITH
(
    TYPE = HADOOP
,   LOCATION ='wasbs://....blob.core.windows.net'
,   CREDENTIAL = ASBSecret
)
;

-- Creating external file format (delimited text file)
CREATE EXTERNAL FILE FORMAT text_file_format 
WITH 
(   
    FORMAT_TYPE = DELIMITEDTEXT 
,   FORMAT_OPTIONS  (
                        FIELD_TERMINATOR ='|'
                    ,   USE_TYPE_DEFAULT = TRUE
                    )
)
;


-- Creating external table pointing to file stored in Azure Storage
CREATE EXTERNAL TABLE [Myfile] 
(
Col1    varchar(5),
Col2    varchar(5)
)
WITH 
(
    LOCATION    = '/myfile.txt'
,   DATA_SOURCE = azure_storage1
,   FILE_FORMAT = text_file_format      
)
;
Run Code Online (Sandbox Code Playgroud)

Nic*_*SFT 5

我们\xe2\x80\x99 目前正在研究一种向用户冒出拒绝原因的方法。

\n\n

与此同时,正在发生的情况如下:\n允许模式匹配失败的默认行数为 0。这意味着,如果您从 /myfile 加载的行中至少有一个\xe2\x80\x99 .txt 与\xe2\x80\x99 与架构不匹配。在 Hive 中,字符串可以容纳任意数量的字符,但 varchar 不能。在这种情况下,\xe2\x80\x99s 在 \xe2\x80\x9cnull 、 ZZ\xe2\x80\x9d 的 varchar(5) 上失败,因为它超过 5 个字符。

\n\n

如果您\xe2\x80\x99d想更改CREATE EXTERNAL TABLE调用中的REJECT_VALUE,这将使另一行\xe2\x80\x93可以在此处找到更多信息: https: //msdn.microsoft.com/库/dn935021(v=sql.130).aspx

\n