我有以下CEP PatternStream,其中数据流是基于实体ID分区的,因为只有实体具有相同的实体ID时,我才对模式匹配感兴趣: 但随后我注意到检查点状态大小随着实体ID数量的增加而增加。如果我对检查点的理解是正确的,这是意料之中的,因为运算符状态的数量会增加。但我想弄清楚是否有其他方法可以最小化检查点状态大小。 > 有没有不同的方法来实现这种模式匹配,而不根据实体ID对数据流进行分区?
然后需要对图进行处理/搜索,并可能向下游发出事件。我希望图运算符能够水平伸缩,即每个并行运算符处理图的一个子集(但这将要求每个运算符能够访问整个图)。我感兴趣的是如何将负载分散到所有并行运算符上。 我想我可以使用来确保每个键控操作符的所有输出都发送给每个下游操作符。 获取一个对象流,在内部状态中创建一个图,并可选地生成一个对象流。我希望每个并行运算符处理图的一个子集。不管存在的运算符的并行实例的数
以下用例的最佳实践建议是什么?我们需要将一个流与一组“规则”进行匹配,这些“规则”本质上是一个Flink数据集的概念。对此“规则集”的更新是可能的,但不是频繁的。每个流事件必须与“规则集”中的所有记录进行检查,每次匹配都会在接收器数据流中产生一个或多个事件。规则集中的记录数在6位数范围内。 目前,我们只是将规则加载到本地规则列表中,并在传入的数据流上使用flatMap。在flatMap中,我们只是
考虑一个带有一些节点的Flink集群,其中每个节点都有一个多核处理器。如果我们根据核的数量和相等的内存共享来配置插槽的数量,那么Apache Flink如何在节点和空闲插槽之间分配任务呢?他们是否受到公平对待? 当我们根据节点上可用的核数配置任务插槽时,是否有任何方法使/配置Flink以平等对待插槽 · · · 例如,假设我们对数据进行相等的分区,并在分区上运行相同的任务。Flink使用来自某些
我们有一个带有操作的管道,分成两个工作负载-在第一组中,是CPU密集型的工作负载,它们被放入同一个插槽共享组,比方说。和,因为它使用大容量上载并在内存中保存大量数据。它被发送到插槽共享组。 此外,工作负载和工作负载的并行度级别不同,因为第一个工作负载受源并行度的限制。例如,我们的并行度为50,同时并行度等于78。我们有8个TMs,每个有16个内核(因此也有插槽)。 在这种情况下,理想的插槽分配策略
我知道键控状态属于its键,只有当前键访问它的状态值,其他键不能访问不同键的状态值。 下面是示例(我知道keyBy(sommething)对于两个流操作都是一样的):
> 先让我问一下我的问题,然后你能澄清一下我对应用方法的设想吗? 问题:如果我的应用程序在每一分钟的间隔内创建1.500.000(大约)条记录,并且flink job使用15++不同的运算符从kafka consumer读取这些记录,那么这个逻辑可能会产生延迟、背压等?(可以假设并行度为16) 如果是,是否应该使用带有状态的flatMap(rocksDB)而不是TimeWindow? 我的预测是“
那么有没有?或者javadoc有误导性(或者“动态”是什么意思)?如果没有,有没有这个功能的计划?
理想情况下,与特定记录相关的事件需要以FIFO顺序处理(尽管也会有一个时间戳来帮助检测无序事件),但与不同记录相关的事件可以并行处理。我计划使用构造按记录对流进行分区。 需要进行的处理取决于数据库中关于记录的当前信息。但是,我找不到一个示例或推荐的方法来查询数据库中的记录,以丰富事件,它正在被处理,我需要处理它的附加信息。 我想到的管道如下: ->接收到的id上的keyBy()->从对应于id的数
我可否问一问作出决定的理由是什么?我是否可以推断,如果数据的到达非常不规则(50%进入定义的窗口长度,而其他50%没有),窗口方法的结果更有偏差(因为50%的事件被丢弃)? 另一方面,在使用状态时,我们是否花费更多的时间检查和更新状态?
但是Flink医生说: 在启用Flink检查点的情况下,Flink Kafka使用者将使用来自主题的记录,并以一致的方式定期检查其所有的Kafka偏移量以及其他操作的状态。在作业失败的情况下,Flink会将流程序恢复到最新检查点的状态,并从检查点中存储的偏移量开始重新使用来自Kafka的记录。 阅读其他来源,我猜Flink检查点将保存程序的状态以及消耗的偏移量,但Spark检查点只是保存消耗的偏移
1)以上假设是否正确。2)当发生故障时,滚动窗口有状态是否有意义,我们从最后一个kafka分区提交的偏移量开始。3)当滚动窗口有状态时,这个状态什么时候可以被flink使用。4)为什么检查点和保存点的状态大小不同。5)当发生故障时,flink总是从sorce运算符开始。对吗?
现在我的疑虑是: 1)即使当少数检查点状态大小比其它检查点状态小(70-80%小)时,它也需要几分钟(15-20%的时间),而其它检查点状态则需要5-10秒。 2)缓冲区对齐大小有时会增加到7-8GB,而平均为800MB-1GB,但检查点时间不受此影响。我想它应该需要更多时间,因为它应该等待检查点屏障。 4)很少的子任务在hdfs中需要2-3分钟(5-10%的时间),所以98%的子任务在30-50
是否可以从Flink流作业触发检查点? 我的用例是:我有两个流R和S要用滚动的时间窗口连接。来源是Kafka。我使用事件时间处理和BoundedOutOfOrdernessGenerator来确保来自两个流的事件最终出现在同一个窗口中。
null 此窗口具有一个允许延迟为一分钟的BoundedOutoFordernesTimeStampExtractor。 水印:据我的理解,Flink和Spark结构化流中的水印定义为(max-event-timestamp-seen-so-far-alloged-lateness)。事件时间戳小于或等于此水印的任何事件都将被丢弃并在结果计算中忽略。 在此场景中,几个事件到达Flink运算符时具有