Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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 如何保持与弗林克运动消费者的幂等性?_Apache Flink_Flink Streaming_Amazon Kinesis - Fatal编程技术网

Apache flink 如何保持与弗林克运动消费者的幂等性?

Apache flink 如何保持与弗林克运动消费者的幂等性?,apache-flink,flink-streaming,amazon-kinesis,Apache Flink,Flink Streaming,Amazon Kinesis,我有一个用例,在这个用例中,我通过在EMR上运行的flink作业(使用flink-kinesis连接器)消费来自kinesis流的事件。作业接收事件,对其进行处理并将其放入某个数据存储。 通过处理,这里我的意思是应用一些转换(数据充实)并进行聚合。我这里有几个问题: 如何在使用运动中的事件时保持幂等性?我希望只进行一次处理,因为在聚合值时,重复项可能会给出错误的结果。我能想到的一种方法是在事件中维护主键。但为此,我需要存储已处理的值并每次执行查找,这可能会降低延迟。我该怎么办?还有别的办法解决这

我有一个用例,在这个用例中,我通过在EMR上运行的flink作业(使用flink-kinesis连接器)消费来自kinesis流的事件。作业接收事件,对其进行处理并将其放入某个数据存储。 通过处理,这里我的意思是应用一些转换(数据充实)并进行聚合。我这里有几个问题:

  • 如何在使用运动中的事件时保持幂等性?我希望只进行一次处理,因为在聚合值时,重复项可能会给出错误的结果。我能想到的一种方法是在事件中维护主键。但为此,我需要存储已处理的值并每次执行查找,这可能会降低延迟。我该怎么办?还有别的办法解决这个问题吗?(规模估算:我每天将有500k-600k的活动进入流程)

  • 对于数据充实部分,我需要使用来自外部系统的数据。外部商店的最佳选择是什么,以及如何消费?我希望避免查找我正在处理的每个事件

  • 可能存在我想要重新处理某些事件的场景。如果通过主键保持幂等性,如何处理重新处理情况


  • 我希望这可以帮助您设置与检查点相关的配置

    val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
    env.getCheckpointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE)
    

    我们在说什么样的复制品??您的数据中有重复的事件,希望确保您没有处理它们两次??因为flink kinesis connector只提供一次事件处理。是的,如果生产者将重复事件放入流中,您对可能的重复事件有任何可能的限制吗?也就是说,重复的消息可能会在原始消息之后的2秒内出现,或者完全是随机的?我们正在努力对时间进行限制。到目前为止,我希望这可以帮助您。设置与检查点相关的配置。即使制作人放置了两个不同的事件,但具有相同的消息体,这是否会有帮助,因为这也是重复的?我不知道你提到的重复消费问题是否意味着原始信息有重复或重复消费的动觉。如果源本身有重复的消息,这是不可能的;你必须弄清楚如何摆脱原来的重复消息。