gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:39:21 25 4
gpt4 key购买 nike

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

这是日志行的样子:

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/';

当我执行上面的命令时,表已成功创建。但是当我尝试使用 SELECT 语句查询该表中的数据时,我得到的是 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 |
+---------+

关于regex - 在 Hive 中从 HDFS 中提取数据后获取 Null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44773404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com