为什么会出现此编译错误:“找不到kstream.Consumed的隐式值”,我该如何解决?

尼库·马拉索尤(NicuMarasoiu)

我们有以下依赖关系:

libraryDependencies += "org.apache.kafka"       %% "kafka-streams-scala"         % kafkaVersion
libraryDependencies += "io.confluent"           % "kafka-streams-avro-serde"     % confluentVersion
libraryDependencies += "io.confluent"           % "kafka-schema-registry-client" % confluentVersion
libraryDependencies += "ch.qos.logback"         % "logback-classic"              % "1.2.3"
libraryDependencies += "com.typesafe"           % "config"                       % "1.4.0"
libraryDependencies += "com.sksamuel.avro4s"    %% "avro4s-core"                 % "3.0.4"

我们使用代码生成器从AVRO模式文件中生成Scala案例类。一个这样生成的案例类具有一个Either值作为其字段之一。在AVRO模式中,这是用type = [t1,t2]表示的,因此生成看起来很不错,即求和类型:可以是t1类型或t2类型。

问题变成从主题到案例类(二进制-> Avro Map->案例类)的反序列化路径上缺少什么。

基本上我现在收到此错误:

could not find implicit value for parameter consumed: org.apache.kafka.streams.scala.kstream.Consumed[String, custom.UserEvent]
[error]       .stream[String, UserEvent]("schma.avsc")

首先想到的是kafka-streams-avro-serde,但可能是该库仅确保AVRO Map的Serde [GenericRecord]而不是case类。因此,其他依赖关系之一是帮助AVRO GenericRecord映射到案例类并返回。我们也有一些手写代码可以从模式中生成案例类,这似乎可以直接与Spray json一起使用。

我认为在(二进制<-> Avro GenericRecord <-> case class instance)转换中,存在间隙,并且可能是在case class中有一个Either字段的事实?

我现在正在尝试尝试创建Serde [UserEvent]实例。以我的理解,这将涉及在UserEvent和AVRO GenericRecord(类似于Map)之间进行转换,然后在AVRO Record与二进制文件之间进行转换-可能会被kafka-streams-avro-serde依赖项所覆盖,就像应该有一个Serde [GenericRecord]或类似。

明智地导入,我们可以用它来导入隐式:


import org.apache.kafka.common.serialization.Serde
import org.apache.kafka.streams.Topology
import org.apache.kafka.streams.scala.ImplicitConversions._
import org.apache.kafka.streams.scala.Serdes
import org.apache.kafka.streams.scala.Serdes._
import org.apache.kafka.streams.scala.kstream.Consumed
尼古拉·马拉索尤(Nicolae Marasoiu)

实际上,缺少导入。现在可以编译了。这里是进口:

import org.apache.kafka.streams.Topology
import org.apache.kafka.streams.scala.ImplicitConversions._
import org.apache.kafka.streams.scala.Serdes._

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么会出现此错误,我该如何解决?迅速

C ++:如何解决隐式声明编译错误?

尝试检查碰撞时为什么会出现类型错误,我该如何解决?

为什么我的抽象基类中出现此编译错误?

我的C ++代码在宏+模板编译中失败,为什么会出现此错误?

如何解决此错误:找不到隐式数组的最佳类型

为什么在11.10上运行该程序会出现“找不到GLIBC_2.15”错误?

为什么会出现“找不到数据源名称且未指定默认驱动程序”的问题,我该如何解决?

我该如何解决我的代码中出现编译错误的问题?

什么是错误?我该如何解决?

为什么我的Java代码出现编译错误“;预期”?

为什么我的终端上会出现此错误?

为什么会出现“应用程序不带参数”的提示,我该如何解决?

值错误:无效的 RGBA 参数。为什么可以?我该如何解决?

为什么我的反编译jar会出现很多错误?

为什么在Java中会出现此错误?线程“主”中的异常java.lang.Error:未解决的编译问题

我该如何解决细分错误?

什么是IndexOutOfBoundsException?我该如何解决?

什么是NullPointerException,我该如何解决?

什么是NullReferenceException,我该如何解决?

我该如何解决Android中的此错误?(以非零值表示)

为什么在我运行脚本时出现错误。我该如何解决?

为什么此代码有“内联文件中的EOF”错误,我该如何解决?

为什么会发生此错误,我该如何解决?

当我尝试使用名称和参数类型相同的两个方法时,为什么会出现编译错误?

为什么当我向链接到母版页的页面中的按钮添加点击事件时会出现编译错误

Debian:找不到deb命令。我该如何解决?

Unix - 我该如何解决:找不到命令

找不到与“<%”匹配的结束标记,我该如何解决?