我有一堆看起来像这样的系统日志数据......
Mon Jan 1 00:00:01 UTC 1970 ServerName debug 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、时间、时区、年、主机、消息)
我假设如果我想使用相同的技术来回答这个问题,我可以继续将时间划分为:如果我愿意,或者具有某些价值的消息。