验证—kafka和hadoop的数据接收—如何避免因质量检查失败而导致的数据重复?

lyfkaqu1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(431)

下面是一个简化的场景:
n需要来自同一源的相同原始数据的业务流。使用kafka(普通kafka管道)接收数据,并将数据放在hdfs上,在hdfs上,每个流的原始数据都会触发自动质量检查流。所有n个流可能有不同的数据质量标准。例如,当原始数据转换为所需的模式时,它们可能需要对原始数据应用不同的日期和时间格式。
处理未能满足业务流质量测试的kpi的最佳方法是什么?
选项包括:
全部失败-通知源数据提供程序并等待固定数据。然后重新摄取并运行所有n组质量检查。
创建一个分支-意味着n个未通过质量检查的业务流中的k个将等待其固定数据集,而通过的n-k将处理当前数据集。
对未通过某些业务流质量检查的条目进行标记,并将其放入特殊队列中,以便手动处理/修复。对错误条目的数量应用一些规则和阈值(仅就需要通过此队列并分析和修复有问题条目的团队的能力而言)
以上哪种方法(如果有的话)是最明智的?当许多拥有不同质量标准的消费者使用相同的数据时,是否有处理这种情况的模式或最佳实践?理想情况下,我会避免重复相同的数据,这意味着为每个使用者重新摄取固定的数据集(n-不是最坏的情况,因为对n个用户中的一个进行修复可能会导致其他用户出现问题,而这些问题在之前是正常的。因此,从理论上讲,这个过程可能是无止境的)。

20jt8wwn

20jt8wwn1#

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

相关问题