Validation 使用Kafka和Hadoop接收数据-如何避免因质量检查失败而导致的数据重复?

Validation 使用Kafka和Hadoop接收数据-如何避免因质量检查失败而导致的数据重复?,validation,hadoop,apache-kafka,etl,data-ingestion,Validation,Hadoop,Apache Kafka,Etl,Data Ingestion,下面是一个简化的场景: N需要来自同一来源的相同原始数据的业务流。 使用Kafka普通Kafka管道接收数据,并将其降落在HDFS上,在HDFS上,每个流的原始数据都会触发自动质量检查流。 所有N个流可能具有不同的数据质量标准。例如,当原始数据被转换为所需的模式时,它们可能需要对原始数据应用不同的日期和时间格式 处理未能满足业务流质量测试的KPI的最佳方法是什么 这些选择包括: 全部失败-通知源数据提供程序并等待修复 数据然后重新摄取并运行所有N组质量检查。 创建一个分支-意味着N个业务流中有K

下面是一个简化的场景:

N需要来自同一来源的相同原始数据的业务流。 使用Kafka普通Kafka管道接收数据,并将其降落在HDFS上,在HDFS上,每个流的原始数据都会触发自动质量检查流。 所有N个流可能具有不同的数据质量标准。例如,当原始数据被转换为所需的模式时,它们可能需要对原始数据应用不同的日期和时间格式

处理未能满足业务流质量测试的KPI的最佳方法是什么

这些选择包括:

全部失败-通知源数据提供程序并等待修复 数据然后重新摄取并运行所有N组质量检查。 创建一个分支-意味着N个业务流中有K个没有通过 质量检查将等待其固定数据集,同时 通过的N-K将与当前数据集一起使用。 标记未通过某些业务流质量检查的条目,并将其放入特殊队列中,以便手动处理/修复。针对不良条目的数量应用一些规则和阈值,这仅仅是因为团队意识到需要通过此队列并分析和修复问题条目的能力 如果上述任何一种方法都是最明智的,那该怎么办?当许多具有不同质量标准的消费者使用相同的数据时,是否存在处理这种情况的模式或最佳实践?理想情况下,我会避免重复相同的数据,这意味着为每个消费者N重新摄取固定数据集并不是最坏的情况,因为对N个消费者中的一个进行修复可能会导致其他消费者出现问题,而这些问题在之前是可以解决的。因此,从理论上讲,这个过程可能是无止境的。

我们

在hbase中摄取数据 永远不要删除数据,但是重复数据由hbase进行版本控制。 每小时运行一次从hbase到分区配置单元表的导出(仅限hbase最新版本) 分区基于hbase中的摄取时间戳。这意味着分区是确定的,分区是封闭的。 每小时导出可以根据规则路由到多个表。这可能是因为同一主题/思洛存储器中有多个架构,也可能是由于无效消息造成的,在这种情况下,消息被传递到死信表。 这为使用者增加了一个小时的延迟,但它使我们能够将消息路由和重新路由到确定性的封闭分区中。对于我们的客户来说,1小时的延迟不是问题


根据不同的消费者要求,我们可能会为同一主题/思洛存储器运行多个导出作业。

对不起,我意识到我没有真正回答您的问题。但是,导出作业可能会报告或标记无效邮件。我猜1、2或3取决于管道的质量要求和延迟要求。谢谢@Pelle!听起来是个明智的做法。如果没有更好的选择建议,我们将采用您的解决方案。欢迎来到SO BTW!