Я играл со Scala, пытаясь заставить SMR скомпилировать в Scala IDE с 2.9.1. SMR, кажется, остался нетронутым с 2008 года, и есть много неразрешенных ошибок компиляции. Я застрял на этой строке:
jobConf.setMapRunnerClass(classOf[ClosureMapper[_,_,_,_]]);
ClosureMapper определяется следующим образом:
class ClosureMapper[K1,V1,K2,V2] extends MapRunnable[Writable,Writable,Writable,Writable] {
...
}
и ошибка, которую я получаю:
type mismatch;
found : java.lang.Class[smr.hadoop.ClosureMapper[_, _, _, _]](classOf[smr.hadoop.ClosureMapper])
required: java.lang.Class[_ <: org.apache.hadoop.mapred.MapRunnable]
Так что мне кажется, что метод setMapRunnerClass класса JobConf ограничивает параметр типа для наследования от MapRunnable (что делает ClosureMapper), но, в частности, от типа MapRunnable raw , который, похоже, не оценивает Scala .
Я пробовал следующее, но получил другую ошибку:
jobConf.setMapRunnerClass(classOf[ClosureMapper]);
Тот, который дает class ClosureMapper takes type parameters
Есть какие-нибудь идеи о том, как заставить Scala распознавать ограничение необработанного типа?