我的资料来源和接收器都是卡夫卡的主题。是否有一种方法可以为每个不同的卡夫卡记录生成一个独特的id精确一次?精确一次意味着如果发生重试,相同的记录仍然使用以前生成的id,接收器只存在单个记录。
发布于 2020-05-06 19:55:43
不清楚您希望通过添加这个唯一id来获得什么,也不清楚对其唯一性的要求是否完全清楚。
但是,如果您担心Flink会因为在故障恢复期间发生的重试而在输出主题中创建重复的记录,那么您可以配置Flink和Kafka以避免这种情况,并保证只发生一次行为。
为了实现精确的一次端到端保证:
Semantic.EXACTLY_ONCEtransaction.max.timeout.ms超过缺省值(15分钟)isolation.level设置为read_committed这种方法是以下游Kafka消费者的代价来实现的,他们的预期延迟等于检查点间隔。
详情请参见文献资料。
发布于 2020-05-06 17:05:23
想到的最简单的想法就是简单地创建一个函数,为每条记录生成唯一的hashcode()作为long。如果哈希代码是基于字段的,那么对于非不同的记录,它将是相同的,对于不同的记录,它应该是不同的。
您甚至可以考虑在Java中使用来自hashcode()的Object。
https://stackoverflow.com/questions/61629980
复制相似问题