0

这是一个简化的场景:

N 个业务流需要来自同一来源的相同原始数据。数据使用 Kafka(普通 Kafka 管道)摄取并登陆 HDFS,在 HDFS 上,每个流程的原始数据都会触发质量检查的自动流程。所有 N 个流可能具有不同的数据质量标准。例如,他们可能要求在将原始数据转换为所需模式时,可以对原始数据应用不同格式的日期和时间。

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

选项包括:

  1. 全部失败 - 通知源数据提供者并等待固定数据。然后重新摄取并运行所有 N 组质量检查。
  2. 创建一个分支 - 意味着 N 个未通过质量检查的业务流中的 K 个将等待其固定数据集,而通过的 NK 将使用当前数据集。
  3. 标记某些业务流程未通过质量检查的条目,并将其放入特殊队列以手动处理/修复。对错误条目的数量应用一些规则和阈值(仅就需要通过此队列并分析和修复有问题的条目的团队能力的认识而言)

以上哪种方法(如果有)是最明智的?当许多具有不同质量标准的消费者使用相同的数据时,是否有任何模式或最佳实践来处理这种情况?理想情况下,我会避免重复相同的数据,这意味着为每个消费者重新摄取固定数据集(N - 并不是最坏的情况,因为对 N 中的一个进行修复可能会导致其他事先没问题的问题。所以,理论上,这个过程可能是无止境的)。

4

1 回答 1

1

我们

  1. 在 hbase 中摄取数据
  2. 永远不要删除数据,但是重复的数据由 hbase 控制。
  3. 每小时从 hbase 导出到分区 hive 表(仅限 hbase 最新版本)
  4. 分区基于 hbase 中的摄取时间戳。这意味着分区是确定性的并且分区是关闭的。
  5. 每小时导出可能会根据规则路由到多个表。这可能是因为同一主题/筒仓中有多个模式,也可能是由于无效消息,在这种情况下,它被传递到死信表。

这为消费者增加了一个小时的延迟,但它使我们能够将消息路由和重新路由到确定性的封闭分区中。对于我们的客户来说,1 小时的延迟不是问题。

根据不同的消费者需求,我们可以为同一个主题/筒仓运行多个导出作业。

于 2017-04-27T13:35:35.483 回答