我有这样的特性我可以创建管道对象,如Pipe [String,Int],Pipe [String,String],Pipe [(String,Double),String]
trait Pipe[In,Out] {
def apply(rdd: RDD[In]): RDD[Out]
}
有没有办法像这样创建特征管道
trait Pipe {
def apply[In,Out](rdd: RDD[In]): RDD[Out]
}
然后我可以使用Pipe对象而不给出任何参数。但是我无法创建这个特征对象。
答案 0 :(得分:0)
为了从RDD[Out]
需要生成RDD[In]
,知道如何将一个转换为另一个。这种转换将保留Out
参数,例如:
trait Pipe[In,Out] {
def apply(rdd: RDD[In]): RDD[Out] = rddTransformer(rdd)
private def rddTransformer: RDD[In] => RDD[Out]
}
如果您在编译时知道某些Out
类型的In
类型,那么请查看功能依赖项:https://milessabin.com/blog/2011/07/16/fundeps-in-scala/