简体   繁体   English

Spark 2.x Scala 2.1.1自定义编码器类类型不匹配

[英]Spark 2.x scala 2.1.1 custom encoder class type mismatch

I am using this code to define an encoder for spark 2.x, in scala 2.1.1: 我正在使用此代码在scala 2.1.1中为spark 2.x定义编码器:

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 {}

And IntelliJ says it is fine, but the override of the clsTag method results in a compiler error: IntelliJ表示还可以,但是对clsTag方法的重写会导致编译器错误:

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]

clsTag has to be ClassTag not Class : clsTag必须是ClassTag而不是Class

class LogProcessorMessageEncoder extends Encoder[LogProcessorMessage] {
  override def clsTag: ClassTag[LogProcessorMessage] = ClassTag(classOf[LogProcessorMessage])
  override def schema: StructType = null 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM