我想創建一個蜂巢外部表,使用org.apache.hadoop.hive.serde2.RegexSerDe
來分析一些Log4J
日誌。蜂巢正則表達式不工作
但是我的regex
即使在http://www.regexr.com/的測試中沒有問題也無法正常工作。
我的問題是當我有多行日誌,例如,與它相應的StackTrace的異常日誌。
下面是一個例子:
@@@@ 2015-09-29T11:20:45,549 INFO MYHOSTNAME my-app org.hibernate.jpa.internal.util.LogHelper HHH000204: Processing PersistenceUnitInfo [
name: name
...] @@@@
我已經添加了對日誌的開始和結束的模式,以幫助其解壓縮時出現多線。
這是我的正則表達式:
@@@@ (.{23}) ([\\w]+) ([\\w]+) ([\\w\\-]+) ([\\w\\.$]+) ([\\s\\S]+) @@@@
這是我的表:
CREATE EXTERNAL TABLE log4j(
dt STRING,
level STRING,
host STRING,
app_name STRING,
clazz STRING,
message STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES ("input.regex" = "@@@@ (.{23}) ([\\w]+) ([\\w]+) ([\\w\\-]+) ([\\w\\.$]+) ([\\s\\S]+) @@@@")
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:9000/logs/';
使用單線記錄它工作正常,但像例子中的一個多線,提取數所有列爲空的行。
你能嘗試添加''(S?)正則表達式?像這裏https://regex101.com/r/qF0rD1/1 –
沒有工作,同樣的問題發生。 – ffleandro