在 Hive 中从 HDFS 中提取数据后获取 Null?

Getting Null after extracting data from HDFS in Hive?

到目前为止我所做的是,我已经在我的 linux 环境中设置了 Hadoop 和 Hive,并且我正在尝试将数据从 HDFS 文件提取到我的 Hive table。

日志行是这样的:

apache 2013-10-09T14:04:32Zphp129.124.201.110/EKEE.php20019705910Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24

这是我的 Hive 查询:

CREATE EXTERNAL TABLE LogParserSample(
logtype STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH SERDEPROPERTIES (
 'input.regex' = '^[^0-9]+'
) 
STORED AS TEXTFILE
LOCATION '/mypath/';

当我执行上述操作时,table 已成功创建。但是当我尝试使用 SELECT 语句从 table 查询数据时,我得到的是 null 而不是 apache 这个词。对于这个例子,我试图从上面的日志行中提取 apache 这个词。但后来我尝试在 rubular 中执行相同的正则表达式,结果如我所料是正确的。我想不通为什么!

'input.regex' = '^([^0-9]+).*'
  1. 只有方括号括起来的表达式才会映射到列。
  2. 整条记录应该被正则表达式覆盖

create external table logparsersample
(
    logtype string
)
row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
with serdeproperties (
 'input.regex' = '^([^0-9]+).*'
) 
stored as textfile
;

select * from LogParserSample
;

+---------+
| logtype |
+---------+
| apache  |
+---------+