首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >flink如何保证卡夫卡唱片在重试后准确地保存一次?

flink如何保证卡夫卡唱片在重试后准确地保存一次?
EN

Stack Overflow用户
提问于 2020-05-06 07:49:45
回答 2查看 252关注 0票数 0

我的资料来源和接收器都是卡夫卡的主题。是否有一种方法可以为每个不同的卡夫卡记录生成一个独特的id精确一次?精确一次意味着如果发生重试,相同的记录仍然使用以前生成的id,接收器只存在单个记录。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-06 19:55:43

不清楚您希望通过添加这个唯一id来获得什么,也不清楚对其唯一性的要求是否完全清楚。

但是,如果您担心Flink会因为在故障恢复期间发生的重试而在输出主题中创建重复的记录,那么您可以配置Flink和Kafka以避免这种情况,并保证只发生一次行为。

为了实现精确的一次端到端保证:

  • 启用Flink检查点
  • 设置Semantic.EXACTLY_ONCE
  • 增加transaction.max.timeout.ms超过缺省值(15分钟)
  • 将下游消费者中的isolation.level设置为read_committed

这种方法是以下游Kafka消费者的代价来实现的,他们的预期延迟等于检查点间隔。

详情请参见文献资料

票数 0
EN

Stack Overflow用户

发布于 2020-05-06 17:05:23

想到的最简单的想法就是简单地创建一个函数,为每条记录生成唯一的hashcode()作为long。如果哈希代码是基于字段的,那么对于非不同的记录,它将是相同的,对于不同的记录,它应该是不同的。

您甚至可以考虑在Java中使用来自hashcode()Object

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61629980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档