Hive如何使用<和>符号?

时间:2013-06-29 10:30:04

标签: regex hadoop hive

这是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,请为此提供解决方案

2 个答案:

答案 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;