我正在尝试在Scala中为Spark构建一个ETL类型的模块。我有一个基类变换器,
trait transformer{
def transformer()
}
然而,我将这个基类扩展到另外两种类型单返回和多返回
trait UnaryReturnTransformer extends transformer{
def inPorts()
def outPorts()
def setExpressions()
}
trait MultiReturnTransformer extends transformer{
def inPorts()
def outPorts()
def setExpressions()
}
现在,实际的实现说,查找变换器,
class LookupTransformer extends UnaryReturnTransformer{
//set local variables
//override functions
override def inports(df:DataFrane):
}
返回类本身是否更好,以便我们可以链接代码, 例如,
new LookupTransformer().inports().setExpression().transform().Outports()
或将其作为
val x=new LookupTransformer()
x.inports()
x.setExpression()
x.transform()
val ret=x.outPorts()
这对我来说似乎更像是一个设计问题。了解设计这样一个系统的最佳实践会很棒。
谢谢!