使用Crunch管道的任何人都知道在调用pipeline.run()
或pipeline.done()
方法之前实际上没有执行任何操作。传统上,在大多数语言中,我们可以使用日志语句打印出中间变量值,但是由于管道行为,使用Crunch这是不可能的。有没有办法/解决方法呢?
感谢。
答案 0 :(得分:1)
您可以在执行管道期间记录的DoFn,MapFn,FilterFn函数中添加调试和日志语句。
答案 1 :(得分:1)
我是通过获取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");
}
}