任何使用过Crunch管道的人都知道,在调用pipeline.run()或pipeline.done()方法之前,实际上不会执行任何操作。传统上,在大多数语言中,我们可以将日志语句打印出中间变量值,但对于Crunch,由于管道行为,这是不可能的。有没有办法解决这个问题?
谢谢。
发布于 2015-06-05 12:57:51
您可以在DoFn、MapFn、FilterFn函数中添加调试和日志语句,这些语句是在管道执行期间记录的。
发布于 2017-09-14 05:20:09
我通过获取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");
}
}https://stackoverflow.com/questions/30241808
复制相似问题