通过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的新手,所以这里的任何指针都会有所帮助。
答案 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);