我的代碼就像這樣:如何處理豬溢出內存
pymt = LOAD 'pymt' USING PigStorage('|') AS ($pymt_schema);
pymt_grp = GROUP pymt BY key
results = FOREACH pymt_grp {
/*
* some kind of logic, filter, count, distinct, sum, etc.
*/
}
但現在我發現很多日誌這樣的:
org.apache.pig.impl.util.SpillableMemoryManager: Spilled an estimate of 207012796 bytes from 1 objects. init = 5439488(5312K) used = 424200488(414258K) committed = 559284224(546176K) max = 559284224(546176K)
其實我找到原因,大多數的原因是有一個「熱」鍵,有些東西像key = 0作爲ip地址,但我不想過濾這個鍵。有沒有解決方法?我在我的UDF中實現了代數和累加器接口。
,它記錄看起來像聚集放緩。如果我過濾這個熱鍵,它可能花費5分鐘,但如果不過濾,它將花費超過2小時。 – mark 2012-08-17 03:13:58