【问题标题】:Process of cleaning data that is in a bad state清理坏状态数据的过程
【发布时间】:2018-11-12 18:37:22
【问题描述】:

我了解主题是不可变的。

假设您的主题状态不佳。数据部分乱序、重复记录等。清理这些数据的过程是什么?这个过程如何影响下游消费者?

我看到了几种不同的方法来处理这个问题:

  1. 消费者不会听第一个主题,而是听经过整理的衍生品。

  2. 版本主题并使用重复数据删除逻辑重写数据。然后让消费者改变他们听的主题。但后来我遇到了这样一种情况,即记录要么被缓冲,要么与旧记录交错,而新记录不断涌入。

还有哪些其他方法可以处理这种情况?

【问题讨论】:

    标签: apache-kafka stream-processing


    【解决方案1】:

    听起来数据流架构不是幂等的。 Kafka永远不会乱序或重复数据,生产者会出现问题。 Kafka 会在保留期后自动从主题中删除数据,因此如果您只担心现有数据,请等到该期限进行清理。一旦数据被 Kafka 删除,任何延迟读取的消费者(即想要从已删除的偏移量中读取)都必须将 auto.offset.reset 设置为 earliestlatest 否则消费者将发出 OffsetOutOfRange 错误。

    同时,如果您可以使用consumer.seek(partition, offset)跳过记录并开始轮询特定偏移量/分区

    解决方案将取决于您的业务逻辑和传入数据模式,但您最好通过解决生产者问题而不是在消费者中处理它。

    【讨论】:

    • 是的,绝对是制作人的问题。生产者有重复的数据,在某些情况下产生的记录严重失序。是否有普遍接受的修复主题的过程?还是您只是对主题进行版本化并将消费者转移到新的干净主题?在这种情况下,该主题应包含所有数据作为事实来源。
    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 2018-08-02
    • 2011-07-04
    • 2020-04-03
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    相关资源
    最近更新 更多