Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Apache kafka 在卡夫卡中再现动觉交错窗口_Apache Kafka_Apache Kafka Streams_Amazon Kinesis - Fatal编程技术网

Apache kafka 在卡夫卡中再现动觉交错窗口

Apache kafka 在卡夫卡中再现动觉交错窗口,apache-kafka,apache-kafka-streams,amazon-kinesis,Apache Kafka,Apache Kafka Streams,Amazon Kinesis,AWS Kinesis提供了一个流窗口实现,帮助“分析在不一致时间到达的数据组” 这样的窗口实现特别强大,因为它确保只有在接收到第一个事件(由事件分组定义)并在固定时间后完成时窗口才会启动,从而减少了事件的数量,这些事件是在一个又一个很短的时间内接收到的,最终在单独的窗口中结束 对于快速、简单的流实现选择,动觉似乎是一个不错的选择,但为了审查未来潜在的“锁定”,我们正在尝试了解如何使用Kafka流(如果需要)重新创建类似的功能 显示为支持以下窗口功能: 翻滚(vs) 跳跃(与无运动实现相比)

AWS Kinesis提供了一个流窗口实现,帮助“分析在不一致时间到达的数据组”

这样的窗口实现特别强大,因为它确保只有在接收到第一个事件(由事件分组定义)并在固定时间后完成时窗口才会启动,从而减少了事件的数量,这些事件是在一个又一个很短的时间内接收到的,最终在单独的窗口中结束

对于快速、简单的流实现选择,动觉似乎是一个不错的选择,但为了审查未来潜在的“锁定”,我们正在尝试了解如何使用Kafka流(如果需要)重新创建类似的功能

显示为支持以下窗口功能:

  • 翻滚(vs)
  • 跳跃(与无运动实现相比)
  • 滑动(vs)
  • 会话(vs?)
根据我们现有的研究课程,窗口可能是最接近交错的选项。然而,我们注意到,如果延迟事件到达,即使在该会话之后,会话窗口仍然可以“更新”,否则将被视为“过期/已发出”,并且在记录未来的“流时间”事件之前,会话可能不会发出


因此,我想问一下,最接近交错窗口的实现可能是什么/是否在卡夫卡,以及需要注意的潜在“陷阱”是什么。

会话窗口可能有些类似,但是会话窗口没有固定的大小。窗口边界由“间隙”参数确定。以Amazon文档为例,前两个事件(我们称之为A和B)相隔10秒,第二个和第三个(C)35秒,第三个和第四个(D)10秒。如果指定10秒的间隔,将得到两个不同于翻滚和错开窗口的a、B和C、D窗口。如果指定间隔为35秒,则会得到一个包含所有4个事件的窗口

根据您的用例,它可能仍然可以使用会话窗口工作

然而,我们注意到,如果延迟事件到达,即使在该会话之后,会话窗口仍然可以“更新”,否则将被视为“过期/已发出”

是的,这是正确处理故障记录所必需的。我不确定动觉对活动时间的支持是什么——它们的滚动窗口似乎与ROWTIME对齐(这是挂钟时间吗?)。但是,使用
suppress()
,每个会话只能得到一个结果(通过权衡一些处理延迟)。有关更多详细信息,请查看此博客帖子:

还有,在记录未来的“流时间”事件之前,会话可能不会发出

没错。但这只会发生在完全没有新数据到达的情况下,对于具有连续数据流的流处理应用程序来说,情况不应该如此


您还可以做的是,使用带有窗口状态存储的
transform()
,自己实现所需的逻辑。使用挂钟时间标点,您还可以确保即使没有新的输入数据到达,也会发出数据。对于这种情况,最具挑战性的部分将是无序记录的处理。

此外,Kafka Streams中还有新的抑制功能。Matthias J.Sax在上面共享的链接中也介绍了这一点。相应的Kafka文档部分是。非常感谢您的回答,我认为这是不正确的,但是Kafka stream文档声明“窗口与历元对齐,区间下限是包含的,上限是独占的。”与历元对齐意味着第一个窗口从时间戳零开始[不是像[1452;6452)等“随机”的东西]“不确定我是否能跟上。窗口对齐与“散乱者”有什么关系?注意,窗口基于事件时间和“散乱者”(据我所知)是无序记录。即使窗口在Kafka流中对齐,如果数据在窗口结束时间之后到达,它仍将包含在窗口中。请不要混淆“交错”和“散乱”。我建议您提供交错窗口文档()快速阅读以查看我要求在kafkta中重新创建的内容。哦,我明白了。我之前只跳过了它。我明白了,请更仔细地阅读。它基本上是固定大小的窗口,但它们的开始时间是数据驱动的…我将更新我的答案