【发布时间】:2019-03-19 23:27:57
【问题描述】:
我正在尝试构建一个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'?
我试图在泛型类T 中添加ClassTag,但我找不到正确的语法,因为[T <: MyClass : ClassTag] 或[T : MyClass : ClassTag] 不起作用。
谢谢!
【问题讨论】:
-
附带说明:您可以将
name: String标记为val,而不是定义getName之类的方法。 -
哦!我不知道那是
val在做什么!谢谢!
标签: scala apache-spark generics