我的问题与Hadoop的Pig正则表达式函数有关。特别是,我想探讨这些函数是否可用于解析简单的日志行。我知道我可以使用Streams或Java函数获得所需的输出,因此请仅使用Pig Latin回答。
为了证明我的顾虑,我使用了一个名为Log file log.txt的文件。它只包含一行文本,并使用以下命令上传。
data = LOAD 'farzan/log.txt' USING TextLoader() AS (line:chararray);
它包含的行是 转储数据;
(Jul 17 10:59:59 domain.domain2.company.com <2012-07-17 10:59:59.605 UTC>:[133338908]:<MDS-CS_MDS2>:<DEBUG>:<LAYER = ABC, DEVICEPIN = 25e54h40, GMETAG = 1358096454, TAG = 80, METHOD = writeDisplayImageUpdate, RESULT = 0, SIZE = 30416, DETAIL = OUTGOING>)
SPLIT ITEMS SEPARATION ISSUE 现在让我们使用正则表达式
分割数据data_split = FOREACH data GENERATE STRSPLIT(line, ' <|[\\]>]:[\\[<]');
dump data_split;
((Jul 17 10:59:59 domain.domain2.company.com,2012-07-17 10:59:59.605 UTC,133338908,MDS-CS_MDS2,DEBUG,LAYER = ABC, DEVICEPIN = 25e54h40, GMETAG = 1358096454, TAG = 80, METHOD = writeDisplayImageUpdate, RESULT = 0, SIZE = 30416, DETAIL = OUTGOING>))
结果是正确的,但我如何分离每个元素?
答案 0 :(得分:0)
使用FLATTEN:
data_split = FOREACH data GENERATE FLATTEN(STRSPLIT(line, ' <|[\\]>]:[\\[<]'));