如何在Pig中的Jython UDF中增加Hadoop计数器

时间:2013-02-07 09:52:41

标签: hadoop jython apache-pig

我想监控我的Pig工作进度。大多数工作都是在用Jython编写的UDF中完成的。有没有办法在Jython UDF中定义/增加Hadoop计数器?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我现在无法检查(抱歉未经测试的代码), 但是使用Pig 0.8的Java UDF(非常相似) 它应该是这样的:

public class INC_COUNTER extends EvalFunc<DataBag> {

    @Override
    public DataBag exec(Tuple input) throws IOException {

        PigStatusReporter reporter = PigStatusReporter.getInstance();
        if (reporter != null) {
           reporter.getCounter(Counters.EXAMPLE).increment(1);//Counters.EXAMPLE is an enum value
        }
        return null;
    }
}

我希望这可行,您可以将此代码转换为Jython UDF的解决方案。

答案 1 :(得分:0)

您可以使用setInt("<counter>", <value>)为您的Hadoop配置添加计数器。然后每次UDF运行调用并使用setInt("<counter>", getInt("<counter>") + 1)递增值。我认为我在Hive UDF中做了类似的事情。

在Java docs中。