Hadoop Pig正则表达式

时间:2012-07-24 15:31:38

标签: regex hadoop split apache-pig items

我的问题与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>))

结果是正确的,但我如何分离每个元素?

1 个答案:

答案 0 :(得分:0)

使用FLATTEN:

data_split = FOREACH data GENERATE FLATTEN(STRSPLIT(line, ' <|[\\]>]:[\\[<]'));