这是siva Ramanjaneyulu,我正在做蜂巢。我有hive
的问题 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
对常规exprssion <.*>
不起作用?
如何删除&lt;和&gt;使用正则表达式的symbels,请为此提供解决方案
答案 0 :(得分:0)
试试这个:
蜂房&GT; CREATE TABLE s(num1 STRING)行格式SERDER 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'WITH SERDEPROPERTIES(“input.regex”=“(&lt;。*&gt;)”, “output.format.string”=“%1 $ s”)存储为文本文件;
注意正则表达式parentheses
。
答案 1 :(得分: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;