4
我一直在玩Scala,试图让SMR在2.9.1的Scala IDE中编译。自2008年以来,SMR似乎没有受到任何影响,并且存在大量未解决的编译错误。 ,我被陷在一个是这条线:请参阅具有原始类型约束的基类型
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]
所以,在我看来就像JobConf类的setMapRunnerClass方法约束从MapRunnable继承的类型参数(ClosureMapper所做的那样),但更具体的是MapRunnable的raw类型,斯卡拉似乎不喜欢。
我曾尝试以下,却得到了不同的错误:
jobConf.setMapRunnerClass(classOf[ClosureMapper]);
那人给class ClosureMapper takes type parameters
如何让斯卡拉识别原始类型约束任何想法?
这似乎并没有做到这一点。首先,ClosureMapper的4个类型参数被限制为Writable,而不是ClosureMapper。其次,即使我指定classOf [ClosureMapper [可写,可写,可写,可写]],它不起作用,因为由于某种原因它不能推断(完全指定的)ClosureMapper类不是一个* raw * MapRunnable。 –