我使用 Java 编写了一个累加器 UDF。当我对未排序的数据运行 UDF 时,Pig (0.13.0)accumulate
根据需要调用该方法:
output = FOREACH (GROUP input BY f) {
GENERATE MyUDF(input);
}
我可以说它正在工作,因为日志声明减速器正在累积模式下运行。
但是,当我应用辅助排序时,Pig 会调用该exec
方法。
output = FOREACH (GROUP input BY f) {
sorted = ORDER input BY f2;
GENERATE MyUDF(sorted);
}
我担心的是该exec
方法同时将整个包放入内存。我的输入太大,无法正常工作。这就是我实现Accumulator
接口的原因。
有谁知道为什么第二个示例没有正确使用该accumulate
方法?关于如何排除故障的任何想法?