2013-06-29 38 views
2

這是siva Ramanjaneyulu,我在蜂巢工作。我有以下問題蜂巢Hive如何使用< and >符號正則表達式?

sample.log:<ABC>

CREATE TABLE sample4( num1 STRING) ROW FORMAT SERDE 
'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH 
SERDEPROPERTIES ("input.regex" = "<.*>", "output.format.string" = 
"%1$s") STORED AS TEXTFILE; 

LOAD DATA LOCAL INPATH "../hive-0.9.0/sample.log" INTO TABLE sample4; 

select * from sample4; 

NULL 

預期輸出:ABC

爲什麼這個.RegexSerDe沒有定期p21蛋白表達<.*>工作?

它是如何可能使用正則表達式以除去<和> symbels,可以ü請提供此

回答

0

溶液試試:

蜂房> CREATE TABLE S(NUM1 STRING)行格式SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'WITH SERDEPROPERTIES(「input.regex」=「(<。*>)」, 「output.format.string」=「%1 $ s」 )存儲爲TEXTFILE;

請注意圍繞正則表達式的parentheses

+0

好的,謝謝你Tariq,但我期待輸出ABC不是,請你爲此提供解決方案 – sivaramanjaneyulu

0

由於沒有在正則表達式定義中包含圓括號,因此您將獲得NULL值。如果您不希望尖括號包含在輸出中,則需要將它們放在括號外。括號內的內容是作爲輸出返回的內容。

CREATE TABLE sample4 (num1 string) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH SERDEPROPERTIES (
    "input.regex" = "<(.*)>" 
    , "output.format.string" = '%1$s' 
) 
STORED AS TEXTFILE; 
相關問題