为什么依赖Java通用类的Scala类在Spark中出现NoSuchMethodError失败?

时间:2018-06-28 22:42:29

标签: java scala apache-spark generics traits

  • 注意:为了避免不必要的混乱,我在下面简化了代码。

我下面有一个scala特征过滤器:

trait Filter[T] extends Serializable {
    def evaluate(input: T): Boolean
}

我在一个类中使用它来过滤特殊类型的RDD:

class OtherThing(filter: Filter[String], tokens: RDD[String]){
    tokens.filter(t => {filter.evaluate(t)})
}

这有效,但是,一旦我用Java接口替换了scala特性,就会收到NoSuchMethodError。我的Java界面如下:

public interface Filter<T>  extends Serializable {
    scala.Boolean evaluate(T input);
}

该错误抱怨没有过滤对象的方法。错误消息看起来像这样:

  

原因:java.lang.NoSuchMethodError:my.package.Filter.evaluate(Ljava / lang / Object;)Z

0 个答案:

没有答案