如何与flink kinesis consumer保持幂等性?

wpx232ag  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(443)

我有一个用例,在这个用例中,我通过运行在emr上的flink作业(使用flink-kinesis连接器)消费来自kinesis流的事件。作业接收事件,对其进行处理并将其接收到某个数据存储。这里的处理是指应用一些转换(数据丰富)并进行聚合。我有几个问题:
如何在消耗动觉中的事件时保持幂等性?我想只做一次处理,因为在聚合值时,重复可能会给出错误的结果。我能想到的一种方法是在事件中保持主键。但为此,我需要存储处理的值并每次执行查找,这可能会降低延迟。我怎么处理?有没有别的办法解决这个问题(规模估计:我每天将有50-60万个活动进入)
对于数据丰富部分,我需要使用来自外部系统的数据。外部商店的最佳选择是什么?如何消费?我希望避免查找我正在处理的每个事件。
可能会有我想重新处理某些事件的场景。如果通过主键保持幂等性,如何处理重处理情况?

col17t5w

col17t5w1#

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

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

相关问题