Scala で Hbase の mapreduce ジョブを作成しているときに、この奇妙な問題に直面しました。問題は、私のscalaクラスがScalaMapReducerが次のクラスを拡張する必要があると言うことです http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapper.html
しかし、私がそうして map メソッド (TableMapper の継承された形式のスーパークラス Mapper) を「オーバーライド」すると、scala は「map overrides nothing」というエラーで不平を言い、コンパイルに失敗しますが、Java では問題なくコンパイルできます。
次の回避策を見つけました。
1) TableMapper クラスを拡張するダミー Java クラスを定義し、空の実装でマップをオーバーライドします。そして今、scala からこの Dummy クラスを拡張します。
2) これは、マッパーの特性を定義する goole の回避策で見つけました。
これは内部クラスと関係があるかもしれないと推測していますが、これ以上の手がかりと説明はありません。
(これは一般的な Scala の質問であることを意図しています)
編集:私のscalaクラスからのサンプルコード、
class ScalaMapReducer extends TableMapper[Text,IntWritable]
{
override def map(row:ImmutableBytesWritable,result:Result,context:Context):Unit =
{
//..some code
}
}