如何使用regexserde将日志文件加载到配置单元表中?

e0bqpujr  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(293)

我有一个日志文件,格式如下,我想从中提取 ip, datetime and uri 然后放进table里。

64.242.88.10 - - [07/Mar/2004:17:09:01 -0800] "GET /twiki/bin/search/Main/SearchResult?scope=text&search=Joris%20*Benschop[^A-Za-z] HTTP/1.1" 200 4284

我可以通过将日志文件行作为单个字符串加载到下表中并使用 regexp_extract . create table logs( line string); load data local inpath '.../mylog.log' into table logs; select regexp_extract(line, '(.*) (- -) \\[(.*) -.*\\] \\"GET (.*)\\?',1),--ip regexp_extract(line, '(.*) (- -) \\[(.*) -.*\\] \\"GET (.*)\\?',3),--datetime regexp_extract(line, '(.*) (- -) \\[(.*) -.*\\] \\"GET (.*)\\?',4) --uri from logs limit 10; ```
+---------------+-----------------------+--------------------------------------------+--+
| _c0 | _c1 | _c2 |
+---------------+-----------------------+--------------------------------------------+--+
| 64.242.88.10 | 07/Mar/2004:17:09:01 | /twiki/bin/search/Main/SearchResult |
| 64.242.88.10 | 07/Mar/2004:17:10:20 | /twiki/bin/oops/TWiki/TextFormattingRules |
+---------------+-----------------------+--------------------------------------------+--+

我想做的是创建一个指定serde属性的表并加载它而不使用 `regexp_extract` 功能。我试过下面的方法,但不起作用。

create table logs (
ip string,
day timestamp,
url string)
row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
with serdeproperties ("input.regex" =
"(.) ^- - [ [^-.*]] "([^GET].?)");

load data local inpath ".../mylog.log" into table logs;

我很感激一些帮助和指导。
beq87vna

beq87vna1#

day 不能是时间戳,因为它不是iso格式( yyyy-MM-dd HH:mm:ss )
转义应该用双反斜杠来完成( \\ )
正则表达式应该覆盖整个记录(在本例中以结尾) .* )

create external table logs 
(
    ip  string
   ,day string
   ,url string
)
    row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
    with serdeproperties ("input.regex" = "(\\S+).*?\\[(.*?)\\s.*?(/.*?)\\?.*")
;
select * from logs
;
+--------------+----------------------+-------------------------------------+
|      ip      |         day          |                 url                 |
+--------------+----------------------+-------------------------------------+
| 64.242.88.10 | 07/Mar/2004:17:09:01 | /twiki/bin/search/Main/SearchResult |
+--------------+----------------------+-------------------------------------+

相关问题