gpt4 book ai didi

hadoop - 使用旧 Hadoop API 覆盖映射器中的清理方法时出错

转载 作者:行者123 更新时间:2023-12-02 21:51:08 25 4
gpt4 key购买 nike

我有一个 map task ,我在其中覆盖了 cleanup函数如下所示,但是 IDE 显示一条错误消息,指出“GraphAnonymization.Map_Phase3 类型的方法清理(Mapper.Context)必须覆盖或实现父类(super class)型方法”

public static class Map_Phase3 extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> { 
@Override
public void cleanup(Context context) throws IOException, InterruptedException{
context.write()
...
}
}

方法 cleanup未在旧的 Hadoop API 中定义。我必须切换到新的 API 吗?

最佳答案

在旧的 API(mapred)中,Mapper 接口(interface)扩展了 Closable 接口(interface)——它定义了 close 方法(而不是 cleanup,它是新的 mapreduce API 映射器的方法)。

因此,将您的代码修改为以下内容:

public static class Map_Phase3 extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> { 
@Override
public void close() {

}
}

旧 API 不会将 OutputCollector 传递给您以供您写出任何最终值或累积值,因此您需要将传递给 map 方法的值缓存在映射器的实例变量中。最后,您需要将任何异常包装在 RuntimeException 中,因为 close 方法没有定义任何抛出的异常

关于hadoop - 使用旧 Hadoop API 覆盖映射器中的清理方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20809546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com