我应该在Pig Latin中使用什么类型的分隔符来处理apache日志?

时间:2012-07-08 16:16:26

标签: regex hadoop apache-pig

如果这是我的Apache日志的外观,我应该在PigLatin中使用什么分隔符来分割数据。

[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(',')拆分引用者和另一个字符串。但是我怎么能分开

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

如果我使用空格作为分隔符,则将2012年7月2日10:04:18分成多个字符串。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

这就是我使用的:

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。