使用Kafka和Hadoop摄入数据 - 如何避免质量检查失败可能导致的数据重复



这是一个简化的方案:

n业务流,需要来自同一源的相同原始数据。使用KAFKA(普通Kafka管道(摄入数据,并降落在HDFS上,其中每次流的原始数据都会触发质量检查的自动流量。所有N流都可能具有数据的不同质量标准。例如,他们可能要求将日期和时间的不同格式转换为所需的模式。

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

选项是:

  1. 失败全部 - 通知源数据提供商并等待固定的数据。然后重新使用并运行所有N组质量检查。
  2. 创建一个分支机构 - 意味着k不通过n个业务流量质量检查将等待其固定数据集通过的N-K将与当前数据集一起使用。
  3. 标记没有通过某些业务流的质量检查的条目,并将其放入特殊 queue 中,以手动处理/修复。将一些规则和阈值应用于不良条目的数量(就团队能力的意识而言,需要经过此队列并分析和解决问题的条目(

上述方法(如果有(最明智的方法(如果有(?当许多具有不同质量标准的消费者使用相同数据时,是否有任何模式或最佳实践来处理这种情况?理想情况下,我会避免复制相同的数据,这意味着为每个消费者重新启动固定数据集(n-不是最坏的情况,因为n中的一个修复程序可能会导致其余的问题,因此事先是可以的。,从理论上讲,这个过程可能是无限的(。

我们

  1. HBase中的摄入数据
  2. 永远不会删除数据,但是重复项由HBase版本。
  3. 每小时从HBase到分区蜂巢表(仅HBase最新版本(
  4. 分区基于HBase中的摄入时间戳。这意味着分区是确定性的,分区已关闭。
  5. 小时导出可以根据规则路由多个表。这可能是由于同一主题/孤岛中的多个模式,也可能是由于无效的消息所致,在这种情况下,它传递给了一个死信表。

这为消费者增加了一个小时的延迟,但它赋予了我们将消息路由和重新布鲁特邮件重新布置为确定性封闭分区的能力。对于我们的客户,1小时的延迟不是问题。

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

最新更新