gpt4 book ai didi

scala - 为什么会出现此编译错误 : "could not find implicit value for kstream.Consumed" and how could I fix it?

转载 作者:行者123 更新时间:2023-12-02 00:04:22 24 4
gpt4 key购买 nike

我们有这些依赖关系:

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 映射 -> 案例类)的反序列化路径上缺少什么。

基本上我目前收到这个错误:

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 classes。因此,其他依赖项之一是帮助 AVRO GenericRecord 到案例类映射和返回。我们还有一些手写代码,可以从模式中生成案例类,似乎可以直接与 spray json 一起使用。

我在想,在 (binary <-> Avro GenericRecord <-> case class instance) 转换中,存在一个间隙,这可能是因为在 case 类中有一个 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

最佳答案

实际上缺少一个导入。现在可以编译了。以下是导入:

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

关于scala - 为什么会出现此编译错误 : "could not find implicit value for kstream.Consumed" and how could I fix it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61103804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com