0

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

提前致谢。

4

2 回答 2

2

我现在无法检查它(对不起,未经测试的代码),但在 Java UDF(非常相似)与 Pig 0.8 中,它应该是这样的:

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 的解决方案。

于 2013-02-27T15:45:52.610 回答
0

您可以使用setInt("<counter>", <value>). 然后每次 UDF 运行调用并使用setInt("<counter>", getInt("<counter>") + 1). 我认为我曾经在 Hive UDF 中做过类似的事情。

在 Java文档中。

于 2013-02-07T10:54:55.217 回答