2

【お客様からのご質問】

テキストファイルに次のデータがあります。| で区切られた

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      
)
;
4

1 に答える 1

3

現在、拒否の理由をユーザーに通知する方法に取り組んでいます。

それまでの間、何が起こっているか: スキーマ マッチングの失敗を許容するデフォルトの行数は 0 です。これは、/myfile.txt から読み込んでいる行の少なくとも 1 つがスキーマと一致しない場合を意味します。Hive では、string は任意の量の char に対応できますが、varchar は対応できません。この場合、「null , ZZ」の varchar(5) が 5 文字を超えているため、失敗しています。

CREATE EXTERNAL TABLE 呼び出しで REJECT_VALUE を変更したい場合は、他の行を通過させます。詳細については、https ://msdn.microsoft.com/library/dn935021(v=sql.130) を参照してください。 .aspx

于 2015-09-02T19:10:50.680 に答える