在我的应用程序中,我想丰富一个无限的事件流。流本身是通过对ID进行散列来并行的。对于每个事件,都可能有一个对外部源(例如REST和DB)的调用。这个呼叫本质上是阻塞的。必须保持一个流分区内事件的顺序。 我的想法是创建一个RichMapFunction,它设置连接,然后轮询每个事件的外部源。阻塞调用通常耗时不长,但在最坏的情况下,服务可能会关闭。
我有一个带有15个分区的kafka主题[0-14],我正在运行带有5个并行的flink。因此,理想情况下,每个并行flink使用者应该分别使用3个分区。但即使在多次重启之后,很少有Kafka分区不被任何flink工人订阅。 注意:如果我以1个并行度开始作业,则作业工作非常好。 Flink版本:1.3.3
今天,我想讨论一个关于Flink的概念性话题,而不是一个技术性话题。 在我们的例子中,我们确实有两个Kafka主题A和B,需要连接。连接应该始终包括主题A中的所有元素,以及主题B中的所有新元素。实现这一点有两种可能:始终创建一个新的使用者并从一开始就开始使用主题A,或者在使用后将主题A中的所有元素保持在一个状态内。现在,技术方法是通过连接两个数据流,这很快就向我们展示了它在这个用例中的局限性,因为
我的Flink工作必须在每次工作轮班后计算某个集合。换挡是可配置的,看起来类似于: 出于操作目的,每天的班次都是一样的,一周/一年中的几天之间没有区别。轮班配置可以随时间变化,并且可以不单调,因此表中留下了一个简单的EventTime窗口,如:,因为一些轮班可能会缩小或超时,或者在中间插入几个小时... 我想出了一些基于GlobalWindow和自定义触发器的东西: 在我的自定义触发器中,我尝试识
因此,我将替换为,就像在这个文档示例中一样(具有更高的maxOutOfOrderness延迟),以便处理乱序事件,但我仍然无法获得任何输出。这是为什么?
一旦水印到达时间戳,计时器就会触发 问题是:如果结束记录在先,然后基于逻辑,它不会更新骑行状态(相关键),然后2小时后触发,然后它不会收集,不会发出记录,但是如果这个记录符合我们的要求呢?==>记录开始时间发生在2个多小时前?我认为应该有更多的逻辑来处理这件事
我编写了一个Flink CEP片段,该片段使用()检查状态模式(由键控)。其思想是,如果特定状态在指定时间内未在第一个状态之后到达,则发出警报。 这是有效的,但是如果有nomore消息到该流,则不会触发警报。但只有当带有某种随机状态的消息到达时,这部分才会被触发。 那么,我如何使它触发警报,即使没有消息到达这个流,当带有下一个序列的消息没有带时间到达时?
因此,基本上,当为时,即第一次,应在20秒内触发,并将设置为。从下一次开始,它应该每隔5秒就会被发射一次。 我面临的问题是,每次被激发时,输出中只有一条消息。也就是说,我在20秒后收到一条消息,每5秒收到一条消息。我希望在每次触发的输出中有20条消息。 如果我使用并创建一个五秒的时间窗口,则每5秒输出20条消息。请帮我把这个代码弄对。我是不是缺了什么?
在Web UI中,有两个任务:第一个任务是;第二个是。每个任务得到104个并行度。 子任务的工作负载不均匀,它应该来自。子任务之间的水印是不同的,但是它们开始被固定在一个值上,在很长一段时间内没有变化。从日志中,我可以看到CEP不断评估事件,并将匹配的结果推送到下游sink。 事件率为10k/s,第一个任务的背压保持“高码”,第二个任务的背压保持“好码”,第一个任务的背压保持“高码”,第二个任务的
首先,我已经在这里发现了这个问题:flink程序在并行性方面的行为不同,它看起来和我现在面临的问题一样,但是我认为我在我的场景中确实需要CEP,因为我每小时有超过1百万条属于不同用户密钥的记录需要分析。 所以当我用并行性1运行cep时,一切都运行得很好,即使是不同的用户键,但有点慢,因为flink需要在单个线程中逐个用户地分析用户,而这个操作需要足够快,以识别某种模式,然后在不到1分钟的时间内发送
并行度=1(成功检测到模式) 并行度=4(无法检测到模式)
我仍然纠结于flink如何在不同的运营商之间“交换/转换”数据,以及运营商之间的实际数据发生了什么。 GroupReduces的所有输出数据都被散列,并在(filter->map)运算符的所有并行实例中均匀分布/传输(运算符之间需要序列化/反序列化) 因此,例如,如果GroupReduce运算符的输出约为100MB,它将把100MB转发给(filter->map->map)操作数,并对100MB的
在Flink数据流中,假设上游运算符托管在机器/任务管理器上,那么上游运算符如何知道下游运算符托管在其上的机器(任务管理器)。是否在JobManager对作业子/任务(操作符)进行初始调度期间,在下游/上游操作符之间建立了这样的数据流路径,并且这样的数据流路径在应用程序生存期内是固定的? 更一般地,考虑Flink状态函数,其中支持动态消息传递,并且数据流不是固定的或预定义的,并且给定一个具有键的函
方法process()不更改记录的字段(键)值。假设所有算子的并行度都是2,那么keyBy()at(2)是否也会导致网络洗牌呢?也许keyBy()at(2)由于密钥值不变而具有前向策略避免网络通信代价的效果? 太好了~