在udf中的PIG-超时

时间:2015-01-20 13:44:15

标签: java hadoop apache-pig

我想在我的udf函数中引入一个超时。正如我理解注释

  

MonitoredUDF

将终止exec函数并返回null。但是,由于可能有一些成功的先前处理,我希望它避免丢弃所有数据。理想情况下,我想为UDF中的特定代码部分实现超时。知道如何做到这一点吗?

谢谢

1 个答案:

答案 0 :(得分:0)

也许看一下MonitorUdf的ErrorHandler和TimeoutHadler?

此处来自http://pig.apache.org/docs/r0.9.2/udf.html

  

如果需要,还可以实现自定义逻辑以进行错误处理   创建MonitoredUDFExecutor.ErrorCallback的子类,和   覆盖其handleError和/或handleTimeout方法。这两个   方法是静态的,并在EvalFunc的实例中传递   这会产生异常,也会产生异常,所以你可以使用   您在UDF中根据需要处理错误的任何状态。该   默认行为是每次出错时都会增加Hadoop计数器   遇到了。一旦你有了ErrorCallback的实现   执行自定义逻辑时,您可以在注释中提供它:

import org.apache.pig.builtin.MonitoredUDF;

@MonitoredUDF(errorCallback=MySpecialErrorCallback.class)
public class MyUDF extends EvalFunc<Integer> {
  /* implementation goes here */
}