0

我的问题与 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, ' <|[\\]>]:[\\[<]');

转储数据拆分;

((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>))

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

4

1 回答 1

0

使用扁平化:

data_split = FOREACH data GENERATE FLATTEN(STRSPLIT(line, ' <|[\\]>]:[\\[<]'));
于 2012-07-25T00:07:31.327 回答