我们的库中有使用典型的kafka流的数据处理器(Scala代码):
import org.apache.kafka.streams.StreamsBuilder
import org.apache.kafka.streams.kstream.KStream
之所以移到kafka-stream-scala
的原因是,每当我使用groupBy,selectByKey等函数时,返回类型就会很奇怪。
(builder: StreamsBuilder, stream: KStream[String, Event]) =>
val wgCreatedStream = stream.groupBy((_,v) =>
v.payload match {
case x:WorkgroupCreated => x.id //this is a String
})
以该代码为例。 StreamsBuilder
个结果到KGroupedStream[Nothing,Event]
当我使用这些导入时:
import org.apache.kafka.streams.scala.{ByteArrayWindowStore, StreamsBuilder}
import org.apache.kafka.streams.scala.kstream.{Grouped, KStream, Materialized}
import org.apache.kafka.streams.scala.Serdes.{String,Long}
返回类型最终更改为KGroupedStream[String,Event]
我真正希望的是:
在不重构数据处理器的情况下使用kafka-stream-scala
如果是,那就太好了,尤其是。如果有例子!
如果没有,那将是一个痛苦的旅程。 :((无论如何还是要感谢)
答案 0 :(得分:1)
好的,与同事聊天后,我立即找到了答案。 -___-
来自org.apache.kafka.streams.scala.ImplicitConversions
,
有一个wrapKStream()
可以将
streams.kstream.KStream
转换为streams.scala.kstream.KStream
关于另一种方法,只需直接调用inner
方法。 KTable也是如此。