【发布时间】:2017-05-19 10:17:40
【问题描述】:
我对 Scala/Spark 比较陌生
我正在尝试根据类类型将一个函数重载到 DStream 中
def persist(service1DStream: DStream[Service1]): Unit = {...}
def persist(service2DStream: DStream[Service2]): Unit = {...}
我收到编译错误:
persist(_root_.org.apache.spark.streaming.dstream.DStream) is already defined in the scope
似乎是由于类型擦除。
如何让编译器识别DStream[Service1]与DStream[Service2]不同
谢谢
【问题讨论】:
-
你可以使用scala模式匹配:def persist(serviceDStream: DStream[_]) = { serviceDStream match { case DStream[Service1] => doStuffForService1 }}
标签: scala apache-spark overloading type-erasure dstream