我可以通过hadoop中的代码明确地提前完成Map任务吗?

5kgi1eie  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(274)

有些情况下,我不需要遍历Map任务中的每个输入记录。例如,在每个Map器中,我最多只能从满足特定条件的200条记录中发出,然后它就可以退出了。
我能用hadoop做这个吗?在api文档中找不到相关方法。

aydmsdu9

aydmsdu91#

您可以通过重写 run 方法。
run方法当前看起来像:

public void run(Context context) throws IOException, InterruptedException {
    setup(context);
    try {
        while (context.nextKeyValue()) {
            map(context.getCurrentKey(), context.getCurrentValue(), context);
        }
    } finally {
        cleanup(context);
    }
}

这就是标准 map() 正在调用方法。你可以在那里添加一个计数器,一旦它达到200,就可以跳出while循环。

相关问题