我有一大堆的日誌數據,看起來像這樣...拆分元組領域爲進一步領域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',所以你只需運行一次正則表達式。 –