2016-04-04 19 views
0

私の質問は、以下の行を解析するためにSerDePropertiesを適切に使用する方法です。私は複数のバリエーションを試して、私はヌル値で私のテーブルを埋めるために続けています。下にSerDeとサンプルデータがあります。私の下に立っている([^\s]*)は、^の空白の前にある必要があります。\sは0以上の文字に一致します*。同様に、次の正規表現は、次のカラムに改行が来る前にすべてを置くべきです。HIVE SerDeproperties入力正規表現

私の目的は、数字を1つのカラムに、それ以外はすべて別のカラムに分割することです。 SerDeの私の解釈に間違いはありますか?

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' 
WITH SERDEPROPERTIES ("input.regex" = "([^\s]*) ([^\n]*)"); 

1134999 06Crazy Life 
6821360 Pang Nakarin 
10113088 Terfel, Bartoli- Mozart: Don 
10151459 The Flaming Sidebur 
6826647 Bodenstandig 3000 
10186265 Jota Quest e Ivete Sangalo 
6828986 Toto_XX (1977 
+0

。ハイブコードに問題があります。 – Laurel

+0

コードを実行しても同じ問題が発生しています。すべてがnullとしてロードされます。 –

答えて

0

これを試してみてください(または類似した何か):正規表現はOKですが、 `(\ D +)([^ \ n]は*)`方が良いだろう

ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH SERDEPROPERTIES (
    "input.regex" = "(\\d+) ([^\\n]*)", 
    "output.format.string" = "%1$s %2$s" 
) 
STORED AS TEXTFILE; 

Modified from here.