我的问题与 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>))
结果是正确的,但是如何分离每个元素?