我想在斯卡拉延长蓄电池类,但它在构造扩展火花蓄电池
这里失败是的IntelliJ错误:
Error:(44, 24) overloaded method constructor Accumulator with alternatives: (initialValue: org.apache.spark.AccumulatorParam[T],param: org.apache.spark.AccumulatorParam[org.apache.spark.AccumulatorParam[T]])org.apache.spark.Accumulator[org.apache.spark.AccumulatorParam[T]]` (initialValue: org.apache.spark.AccumulatorParam[T],param: org.apache.spark.AccumulatorParam[org.apache.spark.AccumulatorParam[T]],name: Option[String])org.apache.spark.Accumulator[org.apache.spark.AccumulatorParam[T]] cannot be applied to() class MyAccumulator[T] (initialValue: org.apache.spark.AccumulatorParam[T],param: org.apache.spark.AccumulatorParam[org.apache.spark.AccumulatorParam[T]])
这里是我的代码:
class MyAccumulator[T] (initialValue: AccumulatorParam[T],
param: AccumulatorParam[AccumulatorParam[T]])
extends Accumulator[AccumulatorParam[T]] with Serializable {
def this(initialValue: AccumulatorParam[T],
param: AccumulatorParam[org.apache.spark.AccumulatorParam[T]],
name: Option[String]) = {
this(initialValue,param,name)
}
override def setValue(newValue: AccumulatorParam[T]): Unit = super.setValue(newValue)
override val id: Long = ???
override val zero: AccumulatorParam[T] = ???
override def +=(term: AccumulatorParam[T]): Unit = super.+=(term)
override def add(term: AccumulatorParam[T]): Unit = super.add(term)
override def ++=(term: AccumulatorParam[T]): Unit = super.++=(term)
override def merge(term: AccumulatorParam[T]): Unit = super.merge(term)
override def localValue: AccumulatorParam[T] = super.localValue
override def value: AccumulatorParam[T] = super.value
override def value_=(newValue: AccumulatorParam[T]): Unit = super.value_=(newValue)
override def toString(): String = super.toString()
}
由于scala在声明类属性时创建了它自己的构造函数,我不明白为什么它认为它有一个空构造函数,所以我试图声明一个构造函数,并且它在t他与额外的重复构造函数一样。
我是新来的斯卡拉和火花,请协助!
作品!谢谢 – apolak