从Hadoop中的静态Map类中调用非静态方法

时间:2012-07-20 03:59:44

标签: hadoop distributed-caching static-classes non-static

Using DistributedCache in Hadoop by Yavcular

在上面的链接中,描述了如何以易于理解的方式在Hadoop中使用DistributedCache。但问题是,当我编译代码时,我收到以下错误:

non-static method loadIdUrlMapping(org.apache.hadoop.mapreduce.Mapper.Context) cannot be referenced from a static context
        loadIdUrlMapping(context);

解决方法是什么?我无法将Mapper类更改为非静态,当我将loadIdUrlMapping方法签名更改为static时,我无法访问idmap HashSet

1 个答案:

答案 0 :(得分:0)

您需要发布您的代码版本以确保,但我想您有一个名为cacheItemset的方法,它被定义为静态范围:

public static void cacheItemset(Context) {
    loadIdUrlMapping(context);
}

loadUrlMapping未定义为静态方法,因此您收到编译错误。

如果ReplacementMapper类的版本在它自己的类文件中,那么在类声明中不需要static关键字(仅当ReplacementMapper类是另一个类的内部类时才需要这个) )。