为什么自定义 Estimator 最终会覆盖 Nothing 类型?

Why does custom Estimator end up overriding Nothing type?

我正在实施自定义估算器,它在访问参数 ava.util.NoSuchElementException: Failed to find a default value for isInList 时遇到问题。定义如下:

trait PreprocessingParams extends Params {
  final val isInList = new Param[Array[String]](this, "isInList", "list of isInList items")
}

为了更好地调试问题,我在这里创建了一个最小示例 https://gist.github.com/geoHeil/8dc7a6b6938a517f068e7fd6a981ed12 ExampleTrans 工作得很好。但是,我更愿意将转换器的功能包含到一个估计器中,该估计器也执行一些数据清理。

但是现在我遇到了奇怪的编译问题overriding method has wrong type - expecting Nothing

我的 ExampleEstimator 的 return 类型有什么问题?

您没有指定 Estimator 类型构造函数的泛型类型,因此使用了 Nothing

使用:

class ExampleEstimator(override val uid: String) 
  extends Estimator[ExampleTransModel] with PreprocessingParams {
  ...
}

Estimator的完整定义如下:

abstract class Estimator[M <: Model[M]] extends PipelineStage

注意扩展模型的通用类型 M