我有一大堆的日志数据,看起来像这样...拆分元组领域为进一步领域LOAD后
周一1月1日00:00:01 UTC 1970年服务器名称调试的crond [123456]:系统消息,提示我的东西
我不确定它在这里的格式是可见的,但在ServerName的每一边有一个制表符分裂字符串。所以最初加载它很容易...
A = LOAD '/syslogfiles' USING PigStorage('\t') AS (
date:chararray,
host:chararray,
message:chararray);
所以,现在我有一个3字段的元组。这是我遇到的下一个部分。这是伪代码,因为我似乎无法做到。我觉得EXTRACT可能是我正在寻找的东西,但它并不是正确的。
我想要做的就是进一步上升分裂每个这些领域的,所以像
B = FOREACH A <split> date USING PigStorage(' ') AS (
day:chararray,
month:chararray,
numday:int,
time:chararray,
timezone:chararray,
year:int);
所以现在我将有8场,(日,月,numday,时间,时区,一年一个元组,主持人,消息)
我假设如果我想用同样的技术来回答这个问题,我可以继续按以下方式分割时间:如果我想,或者带有一些值的消息。
更好的是'REGEX_EXTRACT_ALL',所以你只需运行一次正则表达式。 –