我想监控我的Pig工作进度。大多数工作都是在用Jython编写的UDF中完成的。有没有办法在Jython UDF中定义/增加Hadoop计数器?
提前致谢。
答案 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中。