2016-10-10 13 views
3

私はMapReduceプログラムに取り組んできました。私はロードブロッキングを打ち、助けが必要でした。私は3つのジョブを実行するプログラムを持っています(ジョブ#2はforループ内で5回実行されます)。そして、私のマッパーとレデューサーのいくつかが適切に定義されていないようです。コンパイルすると、「メソッドはスーパータイプからメソッドをオーバーライドまたは実装しません」というエラーが発生し続ける。Hadoop - マッパーとレデューサーのオーバーライドエラー

ここに私のプログラムの基本的な構造です:

Job 1:

FirstMapper
んリデューサー

Job 2:

セカンドマッパー
まずリデューサー

Job 3:

決勝マッパー
最終減速

そして、ここでは、私は私のマッパーと減速が定義されている方法は次のとおりです。それは発生しないよう

public static class FirstMapper extends Mapper<Object, Text, LongWritable, Vertex> { 
     @Override 
     public void map(Object key, Text value, Context context) throws IOException, InterruptedException {} 


public static class SecondMapper extends Mapper<LongWritable, Vertex, LongWritable, Vertex> { 
     @Override 
     public void map(long key, Vertex value, Context context) throws IOException, InterruptedException {} 


public static class FirstReducer extends Reducer<LongWritable, Vertex, LongWritable, Vertex> { 
     @Override 
     public void reduce(Long key, Iterable<Vertex> values, Context context) throws IOException, InterruptedException {} 


public static class FinalMapper extends Mapper<LongWritable, Vertex, LongWritable, LongWritable> { 
     @Override 
     public void map(Long key, Vertex value, Context context) throws IOException, InterruptedException {} 


public static class FinalReducer extends Reducer<LongWritable, LongWritable, LongWritable, LongWritable> { 
     @Override 
     public void reduce(Long key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {} 

FirstMapperはOKと表示されますなぜなら、メソッドのシグネチャが正しいように見えるからです。私は当初、それが私のカスタムVertexクラスのためだと思っていましたが、書き込み可能なを実装しています。なぜこれが問題の原因になるのか分かりません。すべての助けが大いに感謝されるでしょう。ありがとう

答えて

1

鍵はWritableComparableインターフェイスを実装し、クラスMapperReducerの署名で指定したタイプと一致する必要があります。

Mapper<LongWritable, Vertex, LongWritable, Vertex>

しかし、その後、あなたがlongを使用map方法で:あなたが持っている二番目の例の場合。これは、署名で指定したタイプ、つまりLongWritableと一致する必要があります。最後の4つのクラスのすべてがこの問題を持って

map(LongWritable key, Vertex value, Context context)

:だから2番目のマップのパラメータが見えるようにする必要があります。

+0

おかげで、問題を見つけるためにもう一組の目が必要でした。これで修正されました。 – xPeaWhyTee

関連する問題