如何在5秒钟的定义时间窗口内在Kafka Streams中实现窗口化?

时间:2019-03-07 08:51:59

标签: apache-kafka kafka-consumer-api apache-kafka-streams kafka-producer-api ksql

我正在尝试使用Kafka Streams实现窗口化,其中我们从一个主题中获得了JSON格式的大量不同事务。对于每个事务ID,可以有多个提交(以SQL提交来考虑,因此对于不同的事务ID可以有多个事务)。我需要设置一个用于微分批处理的窗口,在该窗口中,我将每5秒钟使用一次数据,然后根据交易ID将数据存储在目录中。

我想知道这里的方法,以及应该使用什么库/函数/类?

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式在kafka流中使用Windowing。翻窗的一个例子(如您的情况)

builder.stream("events")
    .groupByKey()
    .windowedBy(TimeWindows.of(TimeUnit.SECONDS.toMillis(10)))
    .count()
    .suppress(untilWindowCloses(BufferConfig.unbounded()))
    .toStream()
    .process(FileSink::new);

您可以在这里找到更多详细信息:
 https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#tumbling-time-windows