PIG- udf 内的超时

Posted

技术标签:

【中文标题】PIG- udf 内的超时【英文标题】:PIG- timeout inside a udf 【发布时间】:2015-01-20 13:44:14 【问题描述】:

我想在我的 udf 函数中引入超时。据我了解注释

受监控的UDF

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

谢谢

【问题讨论】:

【参考方案1】:

也许看看 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 */

【讨论】:

以上是关于PIG- udf 内的超时的主要内容,如果未能解决你的问题,请参考以下文章

描述块内的 jest.setTimeOut() 是不是仅将超时应用于描述块内的测试

Pig 版本和 UDF

Pig 脚本无法注册 UDF

Pig 的 UDF 中存在“in”会导致问题

Pig 中的 Udfs 共享上下文

在查找c ++范围内的完美正方形时由于超时错误而终止