2017-10-04 2 views
1

このarticleは、Hiveで複数文字の区切り文字を使用できることを示しています。MultiDelimitSerdeはNULL DEFINED AS句をサポートしていますか?

しかし、NULL値も指定できますか?

は、私はエラーを返し、次のハイブのSQLを試してみました:

CREATE TABLE temp 
(a STRING, b STRING) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' 
WITH SERDEPROPERTIES ("field.delim"="@#") 
NULL DEFINED AS 'NULL' 
STORED AS TEXTFILE; 

エラー:

Error: Error while compiling statement: FAILED: ParseException line 5:0 missing EOF at 'NULL' near ')' (state=42000,code=40000) 

答えて

2

'NULL'が利用可能であるとして定義されたNULLを使用するオプション我々が使用しています行形式DELIMITEDオプション。ここでは、ROW FORMAT SERDESオプションを使用しているので、明示的にプロパティserialization.null.formatを渡す必要があります。

あなたはserialization.null.formatのプロパティ値を設定することにより、以下のクエリを使用することができます。

CREATE TABLE temp 
(a STRING, b STRING) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' 
WITH SERDEPROPERTIES ("field.delim"="@#",'serialization.null.format'='NULL') 
STORED AS TEXTFILE; 

詳細については、あなたはHive DDLリファレンスガイドを参照することができます。 MultiDelimitSerdeソースコード。

HIVE DDL GUIDE: 

row_format 
    : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char] 
     [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] 
     [NULL DEFINED AS char] -- (Note: Available in Hive 0.13 and later) 
    | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)] 
関連する問題