2

这是 siva Ramanjaneyulu,我正在研究蜂巢。我的蜂巢有以下问题

示例日志:<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对常规表达式不起作用<.*>

如何使用正则表达式删除 < 和 > 符号,您能否为此提供解决方案

4

2 回答 2

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;
于 2013-08-17T03:15:01.600 回答
0

尝试这个 :

hive> CREATE TABLE s(num1 STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "(<.*>)", "output.format. string" = "%1$s" ) 存储为文本文件;

注意parentheses周围的正则表达式。

于 2013-06-30T04:31:54.997 回答