我的數據是這樣的:集聚行價值爲列
2013-11 localhost kern
2013-11 localhost kern
2013-11 192.168.0.59 daemon
2013-12 localhost kern
2013-12 localhost daemon
2013-12 localhost mail
你的想法。我試圖上述按日期(作爲行鍵)基團並且具有對應於每個kern
的計數,daemon
等,總之一列,我期望的輸出應爲如下:
-- date, count(kern), count(daemon), count(mail)
(2013-11, 2, 1, 0)
(2013-12, 1, 1, 1)
目前,我的方法是這樣的。
valid_records = FILTER formatted_records BY date is not null;
date_group = GROUP valid_records BY date;
facilities = FOREACH date_group {
-- DUMB way to filter for now :(
kern = FILTER valid_records BY facility == 'kern';
user = FILTER valid_records BY facility == 'user';
daemon = FILTER valid_records BY facility == 'daemon';
-- this need to be in order so it get mapped correctly to HBase
GENERATE group, COUNT(kern), COUNT(user), COUNT(daemon);
}
兩個問題:
我有3個過濾器上面,但在生產中,應該有比也許10過濾器的更多。如果我使用上面的許多
FILTER
,是否會有性能下降?任何其他更好的方法來做到這一點?
謝謝,所以在這種情況下,mine會產生兩個reduce階段,一個是使用GROUP時,另一個是GENERATE最後的結果,不是?我認爲我可以有一個臨時映射器輸出,我只是擔心如果我有10個「過濾器」,它會有很大的性能影響。會有很多地圖階段也會降低性能?我需要每30分鐘運行一次。我無法想出任何其他方式來解決這個問題,以得到我的最終結果。但是,如果這足夠好,我就可以。 –