Polybase - 从外部源读取时达到最大拒绝阈值(0 行):处理的总 1 行中有 1 行被拒绝
Polybase - maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 1 rows processed
[客户提问]
我在文本文件中有以下数据。由 | 分隔
A | null , ZZ
C | D
当我使用 HDInsight 运行 这个查询时:
CREATE EXTERNAL TABLE myfiledata(
col1 string,
col2 string
)
row format delimited fields terminated by '|' STORED AS TEXTFILE LOCATION 'wasb://.....';
我得到了预期的结果:
A null , ZZ
C D
但是当我 运行 使用 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.
我该如何解决这个问题?
这是我在 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
)
;
我们目前正在研究一种向用户提示拒绝原因的方法。
与此同时,以下是正在发生的事情:
允许模式匹配失败的默认行数为 0。这意味着如果您从 /myfile.txt 加载的行中至少有一个与模式不匹配。在 Hive 中,字符串可以容纳任意数量的字符,但 varchar 不能。在这种情况下,对于“null , ZZ”,它在 varchar(5) 上失败,因为它超过 5 个字符。
如果您想更改 CREATE EXTERNAL TABLE 调用中的 REJECT_VALUE,这将让另一行通过 – 可以在此处找到更多信息:https://msdn.microsoft.com/library/dn935021(v=sql.130).aspx
[客户提问]
我在文本文件中有以下数据。由 | 分隔
A | null , ZZ
C | D
当我使用 HDInsight 运行 这个查询时:
CREATE EXTERNAL TABLE myfiledata(
col1 string,
col2 string
)
row format delimited fields terminated by '|' STORED AS TEXTFILE LOCATION 'wasb://.....';
我得到了预期的结果:
A null , ZZ
C D
但是当我 运行 使用 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.
我该如何解决这个问题? 这是我在 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
)
;
我们目前正在研究一种向用户提示拒绝原因的方法。
与此同时,以下是正在发生的事情: 允许模式匹配失败的默认行数为 0。这意味着如果您从 /myfile.txt 加载的行中至少有一个与模式不匹配。在 Hive 中,字符串可以容纳任意数量的字符,但 varchar 不能。在这种情况下,对于“null , ZZ”,它在 varchar(5) 上失败,因为它超过 5 个字符。
如果您想更改 CREATE EXTERNAL TABLE 调用中的 REJECT_VALUE,这将让另一行通过 – 可以在此处找到更多信息:https://msdn.microsoft.com/library/dn935021(v=sql.130).aspx