任何使用过 Crunch 管道的人都知道,在调用pipeline.run()
orpipeline.done()
方法之前实际上什么都不会执行。传统上,在大多数语言中,我们可以使用日志语句来打印出中间变量值,但是对于 Crunch,这是不可能的,因为管道行为。有没有办法/解决方法?
谢谢。
任何使用过 Crunch 管道的人都知道,在调用pipeline.run()
orpipeline.done()
方法之前实际上什么都不会执行。传统上,在大多数语言中,我们可以使用日志语句来打印出中间变量值,但是对于 Crunch,这是不可能的,因为管道行为。有没有办法/解决方法?
谢谢。
您可以在管道执行期间记录的 DoFn、MapFn、FilterFn 函数中添加调试和日志语句。
我通过logger
在我的 doFn 中获取和使用它来完成它。
import org.apache.log4j.Logger;
...
public static class MyDoFn extends DoFn<Integer, String> {
private static final Logger logger = Logger.getLogger(MyDoFn.class);
...
@Override
public void process(Integer input, Emitter<String> emitter) {
...
logger.info("hello");
}
}