0

さて、私は自分のプログラムを実行しようとしましたが、このエラーが表示されました:

java.lang.RuntimeException:java.lang.NoSuchMethodException:org。(..)。SimpleMapReducePricing $ SimplePricingMapper。()

つまり、マッパーをコンストラクターで初期化する必要がありますよね?だから、私の質問は、なぜ私はそれをしなければならないのですか(私はそれをどの例でも見たことがないので)そしてどうすれば簡単な(noob)方法でそれをすることができますか?新しいAPIを使用していますが、コードは次のとおりです。

    public class SimplePricingMapper 
    extends Mapper<Object, Text, Text, DoubleWritable>
    {   public void map(Object key, Text value, Context context
        ) throws IOException, InterruptedException {

等々...

ps私は同様の質問を見ましたが、答えが私をもっと混乱させたことを認めなければなりません。ありがとう!

4

1 に答える 1

1

コードのコンテキストはわかりませんが、例外メッセージに基づいMapperinner classSimpleMapReducePricing.

Hadoop はMapperのインスタンスなしで をインスタンス化できないため、クラスを static としてSimpleMapReducePricing定義する必要があります。Mapper

public static class SimplePricingMapper 

また、レデューサーが埋め込まれているのSimpleMapReducePricingではないかと思うので、静的に定義する必要があります。

于 2012-07-18T15:31:59.503 に答える