Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用Kafka流处理窗口中的项目_Scala_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Scala 使用Kafka流处理窗口中的项目

Scala 使用Kafka流处理窗口中的项目,scala,apache-kafka,apache-kafka-streams,Scala,Apache Kafka,Apache Kafka Streams,我试图用卡夫卡流在滑动窗口中处理一些事件,但我想我不了解卡夫卡流的一些细节,所以我不能做我想做的事情 我所拥有的: 输入关键/值为(Int,Person)的事件主题 我想要的是: 在10分钟的滑动窗口内阅读这些事件 处理滑动窗口中的每个元素 过滤并计算一些元素,向另一个卡夫卡触发一些事件 主题(如检测到错误的值) 简单地说:在10分钟的滑动窗口中获取所有事件,对它们进行foreach,在窗口上下文中计算一些统计数据/事件,转到下一个窗口 我尝试的是: 我尝试混合流和处理器API,如:

我试图用卡夫卡流在滑动窗口中处理一些事件,但我想我不了解卡夫卡流的一些细节,所以我不能做我想做的事情

我所拥有的:

  • 输入关键/值为(Int,Person)的事件主题
我想要的是:

  • 在10分钟的滑动窗口内阅读这些事件
  • 处理滑动窗口中的每个元素
  • 过滤并计算一些元素,向另一个卡夫卡触发一些事件 主题(如检测到错误的值)
简单地说:在10分钟的滑动窗口中获取所有事件,对它们进行foreach,在窗口上下文中计算一些统计数据/事件,转到下一个窗口

我尝试的是: 我尝试混合流和处理器API,如:

    val streamBuilder = new StreamsBuilder()
    streamBuilder.stream[Int, Person](topic)
      .groupBy((_, value) => PersonWrapper(value.id, value.name))
      .windowedBy(TimeWindows.of(10 * 60 * 1000L).advanceBy(1 * 60 * 1000L))
// now I have a window of (PersonWrapper, Person) right ?
    streamBuilder.build().addProcessor(....)
现在我要在这个拓扑中添加一个处理器来处理滑动窗口的每个事件。
我不明白什么是TimeWindowsStream,为什么我们应该使用KGroupedStream来应用事件窗口。如果有人能告诉我卡夫卡流和我想做什么。

你读过文档了吗:

  • 窗口是一种特殊的分组形式(基于时间的分组)
  • 在Kafka流中计算聚合总是需要分组
  • 在分组和窗口化流之后,您可以调用
    aggregate()
    进行实际处理(不需要手动附加
    Processor
    ;调用
    aggregate()
    将为您隐式添加
    Processor
  • 顺便说一句:Kafka Streams并不真正支持聚合的“滑动窗口”。您定义的窗口称为跳跃窗口

    KGroupedStream
    timewindowedkstream
    基本上只是助手类和一种中间表示形式,允许流畅的API设计

    本教程也是入门的好方法:


    您还应该查看示例:

    你好,Matthias,谢谢,我找到了答案。我需要的是一个计算元素数量的聚合。