s'il vous plaît jeter un oeil à l'extrait de code suivant:Comment renvoyer un type concret lors de la substitution d'une méthode générique dans Scala?
import org.apache.spark.streaming.dstream.DStream
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.rdd.RDD
import org.apache.spark.streaming.Time
import org.apache.spark.streaming.Seconds
abstract class MQTTDStream[T <: Any](ssc: StreamingContext) extends DStream(ssc) {
override def compute(validTime: Time): Option[RDD[T]] =
Some(ssc.sparkContext.parallelize(Seq(1, 2, 3), 1)) //This line doesn't compile
override def dependencies = Nil
override def slideDuration = Seconds(1) // just an example
}
Je reçois l'erreur suivante:
type mismatch; found : Int(1) required: T
J'ai déclaré T à prolonger tout, alors pourquoi le compilateur plaignais? Int est un sous-type de Any, n'est-ce pas?
Merci beaucoup!
Mise à jour: 2.9.16:
Changé pour prolonger de DSTREAM [Int], mais toujours la même erreur:
abstract class MQTTDStream[T](ssc: StreamingContext) extends DStream[Int](ssc) {
override def compute(validTime: Time): Option[RDD[T]] =
Some(ssc.sparkContext.parallelize(Seq(1, 2, 3), 1)) //This line doesn't compile
override def dependencies = Nil
override def slideDuration = Seconds(1) // just an example
}
EDIT: 2.9.16:
Merci à Alexey, cette est la solution de travail:
import org.apache.spark.streaming.dstream.DStream
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.rdd.RDD
import org.apache.spark.streaming.Time
import org.apache.spark.streaming.Seconds
abstract class MQTTDStream[T](ssc: StreamingContext) extends DStream[Int](ssc) {
override def compute(validTime: Time): Option[RDD[Int]] =
Some(ssc.sparkContext.parallelize(Seq(1, 2, 3), 1))
override def dependencies = Nil
override def slideDuration = Seconds(1) // just an example
}
quel est le point de dire T <: Any? Tous les types sont des sous-types de Any. Aussi, ce n'est pas clair quelle ligne est en train de lancer une erreur. – Samar
vient d'ajouter un commentaire sur la ligne qui ne compile pas –