0

YavcularによるHadoopでのDistributedCacheの使用

上記のリンクでは、HadoopでDistributedCacheをわかりやすく使用する方法について説明しています。しかし、問題は、コードをコンパイルしようとすると、次のエラーが発生することです。

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

回避策は何ですか?Mapperクラスを非静的に変更できません。また、メソッドのシグネチャを静的に変更すると、 HashSetloadIdUrlMappingにアクセスできません。idmap

4

1 に答える 1

0

確実にコードのバージョンを投稿する必要がありますが、静的スコープとして定義されている cacheItemset というメソッドがあると思います:

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

loadUrlMapping は静的メソッドとして定義されていないため、コンパイル エラーが発生しています。

クラスのバージョンがReplacementMapper独自のクラス ファイルにある場合、クラス宣言に static キーワードは必要ありません (これは、ReplacementMapper クラスが別のクラスの内部クラスであった場合にのみ必要です)。

于 2012-07-20T10:37:30.633 に答える