0
ich diesen Code verwenden einen Encoder für die Funken 2.x zu definieren, in scala 2.1.1:Spark-2.x scala 2.1.1 benutzerdefinierte Encoderklasse Typenkonflikt
import org.apache.spark.sql.Encoder
import org.apache.spark.sql.types.StructType
class LogProcessorMessageEncoder extends Encoder[LogProcessorMessage] {
override def schema: StructType = null
override def clsTag: Class[LogProcessorMessage] = classOf[LogProcessorMessage]
}
object LogProcessorMessage {}
class LogProcessorMessage extends Serializable {}
Und IntelliJ sagt, es ist in Ordnung , aber die Überschreibung der clsTag Verfahren führt zu einem Compiler-Fehler:
Error:(20, 15) overriding method clsTag in trait Encoder of type => scala.reflect.ClassTag[dvn.aast.telemetry.scala.stream.LogProcessorMessage];
method clsTag has incompatible type
override def clsTag: Class[LogProcessorMessage] = classOf[LogProcessorMessage]
Sie können dies nur als "classTag [LogProcessorMessage]" schreiben (importieren Sie einfach 'classTag' zusammen mit' ClassTag'). –
Vielen Dank euch beiden! Das ursprüngliche def wurde von IntelliJ generiert - ich hätte mir den Rückgabetyp genauer ansehen sollen. Vielen Dank. – absmiths