我应该用什么类型的分隔符来处理apache日志?

bzzcjhmw  于 2021-06-24  发布在  Pig
关注(0)|答案(2)|浏览(328)

如果我的apache日志是这样的,我应该用什么分隔符来分割数据呢。

[Mon Jul 02 10:04:18 2012] [error] [client x.x.x.x] File does not exist: /home/ec2-  user/xxxxxxxxxx/xxxxxxxxx, referer: http://xxxx/xxxxx/xxxxx/

我尝试了pigstorage(',')来分割referer和另一个字符串。但我怎么能分开呢

[Mon Jul 02 10:04:18 2012] [error] [client x.x.x.x] File does not exist: /home/ec2-user/xxxxxxxxxx/xxxxxxxxx

如果我使用空格作为分隔符mon jul 02 10:04:18 2012将被拆分为多个字符串。

jmp7cifd

jmp7cifd1#

我就是这么用的:

REGISTER  /usr/local/pig-0.10.0/contrib/piggybank/java/piggybank.jar;        
A = load '*.log'
        USING org.apache.pig.piggybank.storage.MyRegExLoader(
              '(DATETIMEREX) (ERROREX) (CLIENTEX) (.*)')
        AS ( 
                 dateTime : chararray, 
                 error    : chararray,
                 client   : chararray, 
                 line     : chararray );

用适当的正则表达式替换datetimex、errorex和clientex。

bq8i3lrv

bq8i3lrv2#

你有没有试过装木头的,作为Pig圈的一部分?
http://kickstarthadoop.blogspot.com/2011/06/analyzing-apache-logs-with-pig.html
http://www.cloudera.com/blog/2009/06/analyzing-apache-logs-with-pig/

相关问题