PigStorage中的正则表达式()

时间:2016-06-21 12:29:40

标签: hadoop apache-pig

通过pig将日志文件加载到hdfs时,我感到很震惊。 基本上,此日志文件具有用于分析的WebSphere Server异常。

现在在破坏异常细节的组件并加载到模式中时,我无法将正则表达式指定为PigStorage构造函数。

我的代码:

inputFile = load '/datalake/xxx/yyy/bd_cni/log_analytics_project/raw_data/APSRP7420/SystemOut_16.05.22_11.46.13.log' USING PigStorage('\[\d+\/\d+\/\d+\s+\d+\:\d+\:\d+\:\d+\s+\w+\]') as (someColumnName:chararray);

我得到的错误:

[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 1, column 147>  Unexpected character '['
Details at logfile: /home/rshukla8/pig_1466510599995.log

我完全是PIG和Unix的新手,所以这里的任何指针都会有所帮助。

2 个答案:

答案 0 :(得分:1)

PigStorage无法使用正则表达式进行实例化,相反,您可以使用piggybank库的MyRegExLoader(String pattern)

inputFile = load '/datalake/xxx/yyy/bd_cni/log_analytics_project/raw_data/APSRP7420/SystemOut_16.05.22_11.46.13.log' USING org.apache.pig.piggybank.storage.MyRegExLoader('\[\d+\/\d+\/\d+\s+\d+\:\d+\:\d+\:\d+\s+\w+\]') as (someColumnName:chararray);

答案 1 :(得分:0)

您可以使用PiggyBankCombinedLogLoader,如下所示

 REGISTER '<path of piggybank jar>/piggybank.jar'; 

    logs = LOAD '/in/combined_access_log' USING org.apache.pig.piggybank.storage.apachelog.CombinedLogLoader()
                AS (addr: chararray, logname: chararray, user: chararray, time: chararray,
                    method: chararray, uri: chararray, proto: chararray,
                    status: int, bytes: int, referer: chararray, userAgent: chararray);