我想监控我的 Pig 工作的进度。大多数工作是在用 Jython 编写的 UDF 中完成的。有没有办法从 Jython UDF 中定义/增加 Hadoop 计数器?
提前致谢。
我想监控我的 Pig 工作的进度。大多数工作是在用 Jython 编写的 UDF 中完成的。有没有办法从 Jython UDF 中定义/增加 Hadoop 计数器?
提前致谢。
我现在无法检查它(对不起,未经测试的代码),但在 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 的解决方案。
您可以使用setInt("<counter>", <value>)
. 然后每次 UDF 运行调用并使用setInt("<counter>", getInt("<counter>") + 1)
. 我认为我曾经在 Hive UDF 中做过类似的事情。
在 Java文档中。