Как справиться с разливом памяти у свиньи
Мой код вроде этого:
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, что-то вроде key = 0 в качестве IP-адреса, но я не хочу фильтровать этот ключ. есть ли решение? Я реализовал алгебраический интерфейс и интерфейс аккумулятора в своем UDF.