0
私はScalaの2.1.1で、スパーク2.xのためのエンコーダを定義するには、このコードを使用しています:スパーク2.xのScalaの2.1.1カスタムエンコーダクラス型の不一致
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 {}
そして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]
これは単に 'classTag [LogProcessorMessage]'と書くことができます( 'ClassTag'と一緒に' ClassTag'をインポートするだけです)。 –
ありがとうございました!元のdefはIntelliJによって生成されました - 私はより密接に戻り値の型を調べるべきでした。本当にありがとう。 – absmiths