1

任何使用过 Crunch 管道的人都知道,在调用pipeline.run()orpipeline.done()方法之前实际上什么都不会执行。传统上,在大多数语言中,我们可以使用日志语句来打印出中间变量值,但是对于 Crunch,这是不可能的,因为管道行为。有没有办法/解决方法?

谢谢。

4

2 回答 2

1

您可以在管道执行期间记录的 DoFn、MapFn、FilterFn 函数中添加调试和日志语句。

于 2015-06-05T04:57:50.717 回答
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");
    }
}
于 2017-09-13T21:20:09.037 回答