我使用Hadoop豬(0.10.0)來處理日誌文件,日誌行看起來像:豬:解析線空白符
2012-08-01 INFO (User:irim) getListedStocksByMarkets completed in 7041 ms
我想獲得通過拆分令牌的關係空白,那就是:
(2012-08-01,INFO,(User:irim),getListedStocksByMarkets,completed,in,7041,ms
)
加載與聲明的數據:
records = LOAD 'myapp.log' using PigStorage(' ');
沒有達到這個目的,因爲我的令牌可以被幾個空白區分開,導致幾個空的令牌。 PigStorage似乎不支持正則表達式分隔符(或者至少我沒有成功配置它)。
所以我的問題:什麼是獲得這些令牌的最佳方式?
如果我可以從一個關係中刪除空元素,我會很高興,可以用Pig來做到這一點嗎?
例如從開始:
(2012-08-01,,,INFO,,,(User:irim),,getListedStocksByMarkets,completed,in,7041,ms
)
要獲得
(2012-08-01,INFO,(User:irim),getListedStocksByMarkets,completed,in,7041,ms
)
我試圖用TextLoader
然後TOKENIZE
另一種方法,但我不知道這是最好的戰略。 也許用戶負載是一個功能比較自然的選擇......
問候,
喬爾
它的工作原理,謝謝! 我傾向於認爲用戶負載函數會更有效率,您是否同意? – 2012-08-14 08:34:08
是的,它會的。好處是:將數據格式從豬腳本中分離出來,與AS集成(列......)。 – alexeipab 2012-08-14 09:59:23
然後,我要使用該方法,再次感謝。 – 2012-08-14 11:43:54