1

如果这是我的 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

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

4

2 回答 2

1

作为Piggybank的一部分,您尝试过 Log Loaders吗?

于 2012-07-08T17:24:28.127 回答
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。

于 2012-08-23T18:14:15.217 回答