Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 flink Flink:使用允许的延迟时清除windows元数据_Apache Flink_Flink Streaming - Fatal编程技术网

Apache flink Flink:使用允许的延迟时清除windows元数据

Apache flink Flink:使用允许的延迟时清除windows元数据,apache-flink,flink-streaming,Apache Flink,Flink Streaming,在允许的延迟期结束之前,如何“清除”窗口元数据(WindowOperator和InternalTimer) 是否可以将此元数据与窗口数据本身一起清除 我们不介意丢失元数据-不需要根据以前的非延迟数据的上下文来处理具有相同键+时间的延迟事件 一些背景- [目前正在使用Flink-v1.6] 我们正在处理事件时间窗口,并处理具有唯一密钥的大量事件。95%的活动不会迟到,只会发射一次 我们的工作规定允许迟到72小时。我们使用fire&purge,但允许的延迟机制仍然会导致我们想要减少的巨大状态(保留所

在允许的延迟期结束之前,如何“清除”窗口元数据(WindowOperator和InternalTimer)

是否可以将此元数据与窗口数据本身一起清除

我们不介意丢失元数据-不需要根据以前的非延迟数据的上下文来处理具有相同键+时间的延迟事件

一些背景-

[目前正在使用Flink-v1.6] 我们正在处理事件时间窗口,并处理具有唯一密钥的大量事件。95%的活动不会迟到,只会发射一次


我们的工作规定允许迟到72小时。我们使用fire&purge,但允许的延迟机制仍然会导致我们想要减少的巨大状态(保留所有windows元数据)。

通常,如果需要自定义状态管理,我建议使用ProcessFunction而不是Flink的windows API,因为它比相关逻辑可能分布在窗口赋值器、触发器、逐出器和进程窗口函数中更容易理解和维护

在您的案例中,有一个想法确实浮现在您的脑海中:如果您不允许长时间的迟到,而是将迟到的事件收集到一个侧面输出中,这对您是否有效

更新:


保留的元数据是能够继续向窗口添加事件所需的状态。这是允许延迟事件的代价

谢谢David的回复。您能描述一下为什么Flink保留WindowsSize+allowedLateness的“窗格”元数据吗?我是否可以配置此元数据不会保存在内存中?事实上,ProcessFunction将提供我们所需的自由度(至少从天真的角度来看,目前正在检查)。将ProcessFunction与Windows API进行比较,是否保存了可能会使我们回到相同内存问题的元数据?关于您的第二个建议,它将在我们原始数据的某些排序条件下工作。问题是,偶尔我们可能会遇到一个最终案例场景,其中会插入大量“延迟”数据。如果我们将windowapi用于这方面的输出,它将使我们回到原点。您的意思是我们可以以不同的方式处理边输出流吗?ProcessFunction没有任何隐式(隐藏)状态。只有您显式实例化的状态——包括您可能创建的任何计时器。