什么是与KSQL join WHERE子句等效的java / scala kafka流?

时间:2019-05-03 11:18:00

标签: scala apache-kafka apache-kafka-streams ksql

假设我有2个kafka流(kafka-streams-scala库,版本2.2.0):

val builder: StreamsBuilder = new StreamsBuilder
val stream1: KStream[String, GenericRecord] = builder.stream[String, GenericRecord]("topic1")
val stream2: KStream[String, GenericRecord] = builder.stream[String, GenericRecord]("topic2")

及其加入:

val stream3: KStream[String, MyClass] = flights.join(schedules)((r1, r2) =>  MyClass(r1.get("f1"), r2.get("f2")), JoinWindows.of(Duration.ofSeconds(30))

KSQL中可用的WHERE子句等效吗? (请参阅late_orders流)以获取流API? 仅使用stream3.filter是一个好主意吗?这种方法是否具有与KSQL创建的流相同的效率?

1 个答案:

答案 0 :(得分:2)

  

KSQL中可用的WHERE子句等效吗? (请参阅late_orders流)以获取流API?

是:

  • KStream#filter(),它返回经过过滤的KStream
  • KTable#filter(),它返回经过过滤的KTable

https://kafka.apache.org/documentation/streams/developer-guide/dsl-api.html#stateless-transformations

  

只使用stream3.filter是一个好主意吗?

是的

  

这种方法是否具有与KSQL创建的流相同的效率?

是的