实时流计算结果如何验证结果准确性?

实时数仓模型,常应用在实时营销;实时风控等领域,实时数仓的分层方式一般也遵守传统数据仓库模型,也分为了 ODS 操作数据集、DWD 明细层和 DWS 汇总层以及应用层。但实时数仓模型的处理的方式却和传统数仓有所差别,如明细层和汇总层的数据一般会放在 Kafka 上,维度数据一般考虑到性能问题则会放在 HBase 或者 Tair 等 KV 存储上,即席查询则可以使用 Flink 完成。
由于流式计算是无界无序的;如何验证处理结果一致性和准确性相对于有边界的批式处理的数据流结果验证更为麻烦,大家在这块实践中有没有什么好的经验,分享一下?
我们目前主要是从构建多种校验补偿机制,确保数据完整性和准确性。 为了进一步提升实时数据处理的完整性和准确性,引入多种数据补偿机制。一是基于乐观锁版本号,确保高吞吐下的数据准确性。在消息写入分布式数据库时,通过按照版本号进行消息的写入及更新,使得乱序消息的到达不影响数据入库的准确性。二是使用Flink的Checkpoint和两段事务提交机制确保集群异常时数据的准确性。当消息处理出错时,将消息放置到补偿队列或死信队列中,确保出错的消息不丢失、不重复,并可以继续重试处理。三是离线结果数据和实时结果数据相互校验,确保数据完整性。Flink实时数据处理当天T日数据,离线数据处理T-1日数据,每天晚上离线结果数据和实时结果数据进行相互核对,对于差异数据,以离线结果数据为准。

参与9

2同行回答

lzj7618937lzj7618937质控经理cib
实时流计算是指处理的数据源是一些不断产生新数据的连续流,并通过实时分析技术,将这些实时数据变为业务价值。流计算往往应用于大数据领域的数据分析,日志处理等场景。验证实时流计算结果准确性是非常重要且有挑战的。下面是一些验证实时流计算结果准确性的方法:1.使用样本对...显示全部

实时流计算是指处理的数据源是一些不断产生新数据的连续流,并通过实时分析技术,将这些实时数据变为业务价值。流计算往往应用于大数据领域的数据分析,日志处理等场景。

验证实时流计算结果准确性是非常重要且有挑战的。下面是一些验证实时流计算结果准确性的方法:

1.使用样本对流数据进行采样。该样本必须包含一些想要检查的特征(例如,平均值、中位数和方差)。您可以使用这些特征来计算错误率并评估数据的准确性。

  1. 验证窗口操作。在流计算中,通常会对数据流应用窗口操作,从而将数据流分成固定大小的部分(如滑动窗口、固定窗口或会话窗口)。您可以验证某个窗口上的操作结果是否正确,以确保整个系统在处理大量数据集时正确。
  2. 使用辅助数据源。这些数据源可以用作参考点,以验证所有操作的输出是否与预期一致。有多种数据源可供选择,例如文件、数据库或第三方API。
  3. 观察关键指标(KPIs) 。监视KPI能让您跟踪计算的功能是否按需运行。如果KPI超出特定界限,则可能存在问题。
  4. 与其他数据存储进行比较。最后,您可以创建一个独立的验证管道,并将其与所有其他来源进行比较,以确保实时计算的结果是正确的。

需要注意的是,在实时流处理中,突发事件的出现会影响计算结果的准确性,因此需要及时进行调整和维护。

收起
银行 · 2023-03-09
浏览1027
guoxilinguoxilin高级非功能测试专家某科技公司
由于实时数仓的数据是无边界的流,相比于离线数仓固定不变的数据更难验收。基于不同的场景,还有的做法提供了 2 种验证方式,分别是:抽样验证与全量验证。1)抽样验证方案:该方案主要应用在数据准确性验证上,实时汇总结果是基于存储在 Kafka 的实时明细中间层计算而来,但 Kafka 本身...显示全部

由于实时数仓的数据是无边界的流,相比于离线数仓固定不变的数据更难验收。基于不同的场景,还有的做法提供了 2 种验证方式,分别是:抽样验证与全量验证。
1)抽样验证方案:
该方案主要应用在数据准确性验证上,实时汇总结果是基于存储在 Kafka 的实时明细中间层计算而来,但 Kafka 本身不支持按照特定条件检索,不支持写查询语句,再加上消息的无边界性,统计结果是在不断变化的,很难寻找参照物进行比对。鉴于此,采用了持久化消息的方法,将消息落盘到 TiDB 等存储,基于 TiDB 的能力对落盘的消息进行检索、查询、汇总。编写固定时间边界的测试用例与相同时间边界的业务库数据或者离线数仓数据进行比对。通过以上方式,抽样数据进行指标准确性验证,确保测试用例全部通过。
2)全量验证方案
该方案主要应用在数据完整性和一致性验证上,在实时维度表验证的场景使用最多。大体思路:将存储实时维度表的在线 HBase 集群中的数据同步到离线 HBase 集群中,再将离线 HBase 集群中的数据导入到 Hive 中,在限定实时维度表的时间边界后,通过数据平台提供的数据校验功能,比对实时维度表与离线维度表是否存在差异,最终确保两张表的数据完全一致

收起
互联网服务 · 2023-10-10
浏览464

ChatGPT 回答

实时数仓模型的处理方式和传统数据仓库确实有所不同,而且实时数仓的数据流是无界无序的,因此确保处理结果的一致性和准确性是非常重要的。

以下是一些验证处理结果一致性和准确性的经验:

  1. 数据采集和处理过程中,需要对每个数据流进行标记,以便在后续的处理中能够追踪数据流的来源和处理过程。这样可以确保数据流的一致性和准确性。
  2. 在实时数仓中,数据流是无界无序的,因此需要使用窗口函数来处理数据流。窗口函数可以将数据流分成有限的、有序的数据块,从而方便进行处理和验证处理结果的一致性和准确性。
  3. 在实时数仓中,数据流的处理需要使用流式计算引擎,如Flink、Spark Streaming等。这些引擎提供了丰富的API和工具,可以帮助我们验证处理结果的一致性和准确性。
  4. 在实时数仓中,需要使用一些数据质量工具来验证数据的准确性和一致性。例如,可以使用数据质量规则引擎来验证数据的完整性、准确性、一致性等方面的问题。
  5. 在实时数仓中,需要使用一些监控工具来监控数据流的状态和性能。例如,可以使用监控工具来监控数据流的延迟、吞吐量、错误率等指标,以便及时发现和解决问题。

总之,在实时数仓的处理过程中,需要注意数据流的一致性和准确性,使用窗口函数、流式计算引擎、数据质量工具和监控工具等工具来验证处理结果的一致性和准确性。

提问者

guoxilin
高级非功能测试专家某科技公司
擅长领域: 服务器数据库云计算

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2023-03-02
  • 关注会员:2 人
  • 问题浏览:1809
  • 最近回答:2023-10-10
  • X社区推广