Я пытаюсь построить trait
, который бы реализовал общий метод помощи для типа RDD
, который у меня есть.
Например:
abstract class MyClass(name: String) {
final def getName: String = name
}
trait MyTrait[T <: MyClass] {
def myMethod(
input: RDD[T],
something: String
): RDD[T] = {
input.filter(_.getName != something)
}
def otherExample(
inputA: RDD[(T, String)],
inputB: RDD[(T, Int)]
): RDD[(T, (String, Int)] = {
inputA
.keyBy(_._1.getName)
.join(inputB....)
...
}
}
Но я получаюстранные ошибки, такие как
value mapValues is not a member of org.apache.spark.rdd.RDD[(T, String)]
[error] possible cause: maybe a semicolon is missing before `value mapValues'?
Я пытался добавить ClassTag
в общий класс T
, но не смог найти правильный синтаксис, поскольку [T <: MyClass : ClassTag]
или [T : MyClass : ClassTag]
не работали.
Спасибо!