服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-15 更新于 2026-09-15 简米科技 3,667 字 9 分钟阅读

数据入湖流程可加质量校验拦截脏数据再落盘,怎样做数据质量校验?

导读数据入湖流程里把质量校验放在落盘动作之前,可以在脏数据接触到数据湖存储前直接拦截,这是目前成本最低、效果最稳的数据治理前置手段,为什么数据入湖不能跳过质量校验脏数据进入数据湖后的连锁反应数据湖一旦被脏数据污染,不会只影响某一张表,下游任务会顺着血缘把错误放大,订单表里金额字段出现负数,后续实时大屏统计GMV直接……

数据入湖流程里把质量校验放在落盘动作之前,可以在脏数据接触到数据湖存储前直接拦截,这是目前成本最低、效果最稳的数据治理前置手段。

为什么数据入湖不能跳过质量校验

脏数据进入数据湖后的连锁反应

数据湖一旦被脏数据污染,不会只影响某一张表,下游任务会顺着血缘把错误放大。

  • 订单表里金额字段出现负数,后续实时大屏统计GMV直接出错
  • 用户ID字段存在大量空值,用户画像宽表join后出现数据倾斜
  • 日期格式混用YYYYMMDD和YYYY-MM-DD,分区字段无法正常裁剪
  • 枚举值超出范围,BI报表筛选器里出现一堆无法归类的脏值

实际项目里,很多团队等到指标对不上才开始排查,最终发现几个月前的入湖批次就带着错误数据,找源头、删分区、重跑任务,链路非常长。先入湖再治理,不如直接把问题拦在湖外。

数据入湖和传统ETL的质量校验位置差异

传统数仓ETL习惯先抽取到ODS层,再做清洗和转换,数据湖建设时如果照搬这套逻辑,原始区会变成脏数据收容站,行业共识认为,数据湖保留原始数据,指的是保留源系统的格式、粒度和语义,而不是保留错误数据。

  • 数仓ODS层:可以做复杂业务清洗,但已经进入存储
  • 数据湖原始区:适合做基础质量拦截,不做重业务加工
  • 数据湖标准区:再做深度模型化校验

位置选错,后续补救动作都会变得很重。

数据入湖流程中怎么加质量校验才能拦住脏数据

先定义规则,再启动入湖任务

不要急着写入湖脚本,很多数据质量问题源于规则没有提前定清楚。

实操步骤:

  • 在元数据管理模块里给每张入湖表配置质量规则表
  • 规则绑定到具体字段、具体分区、具体源系统
  • 校验项包括:非空校验、字段类型校验、枚举值校验、长度校验、正则格式校验、跨字段一致性校验

例如订单表写入前配置:

order_id:非空、唯一
amount:0-100000
order_status:PAID、UNPAID、CANCEL
create_time:格式yyyy-MM-dd HH:mm:ss
user_id:非空、长度8-20

规则表配置完成后,入湖任务启动时自动加载,这样每次写入都会执行同一套拦截逻辑。

数据入湖流程可加质量校验拦截脏数据再落盘,怎样做数据质量校验?

落盘前阻塞式校验与落盘后旁路校验对比

校验方式 执行位置 脏数据去向 适用场景
阻塞式校验 写入数据湖存储前 直接拒绝,不落盘 核心业务表、资金相关表
旁路校验 写入后异步扫描 已落盘,可标记隔离 日志数据、行为埋点数据

核心业务数据多数情况下建议采用阻塞式校验,日志类数据可以先落盘再旁路扫描,但需要给数据打上质量标签,避免下游消费到未标记的脏数据。

实操步骤:在入湖脚本中嵌入校验模块

以Flink SQL入湖为例,给出可验证的路径。

  1. 在INSERT INTO lake_table前,创建临时视图v_quality_check
  2. 在视图中使用CASE WHEN判断每个字段是否违反规则
  3. 用WHERE条件过滤掉不符合规则的数据
  4. 不符合规则的数据写入quarantine表,不进入正式湖表

命令示例:

INSERT INTO lake_table
SELECT  FROM v_quality_check
WHERE null_order_id = 0
  AND invalid_amount = 0
  AND invalid_status = 0;

quarantine表需要保留字段:source_table、batch_id、rule_id、fail_reason、raw_data、check_time,这样后续可以追溯每一批被拦截数据的来源。

数据湖和数仓哪个更适合先做质量校验再落盘

数据湖原始数据区的质量策略

数据湖通常划分原始区、标准区、应用区,原始区可以保留接近源系统的数据,但仍然需要基础质量拦截。

  • 文件格式校验:Parquet、ORC、JSON格式是否合法
  • 字段数量校验:源端字段数是否与预期一致
  • 编码校验:UTF-8编码是否完整,避免乱码
  • 分区完整性校验:分区是否缺失、是否重复

不建议在原始区做复杂业务规则校验,原始区保留源系统上下文,过度清洗会丢失后续数据探索的价值。

数仓分层后的补救成本对比

数据先入湖再进数仓,如果在数仓ODS层才发现订单ID重复,需要回溯删除已写入数据湖的同一批数据,跨两个存储介质做数据修正,操作链路比想象中长。

  • 湖内删除:需要按分区删除原始数据
  • 数仓删除:需要重新同步并重刷模型层
  • 数据入湖流程可加质量校验拦截脏数据再落盘,怎样做数据质量校验?

  • 下游影响:报表、API、机器学习训练集都可能已经消费了错误数据

业内专家指出,数据湖项目中相当一部分数据质量事故,都源于原始区没有设置最基础的校验规则,落盘前拦截一次,比事后在数仓层补救的综合成本低很多。

企业数据入湖项目落地时质量校验的常见场景

实时入湖和批量入湖的校验差异

实时入湖和批量入湖对校验性能的要求完全不同。

  • 实时入湖:每条数据校验必须控制在毫秒级,不能使用复杂的跨表查重
  • 批量入湖:可以执行跨分区全量扫描、多表join查重,校验时间可容忍分钟级

实时场景一般只保留非空、类型、长度、枚举等轻量规则,批量场景可以加入重复率、比例校验、环比波动校验。

例如订单实时入湖时,只校验订单ID是否为空、金额是否在合法范围,批量同步用户表时,再检查user_id重复率是否超过设定阈值。

多源异构数据接入的规则配置

不同源系统存在字段同名不同义、同义不同名的情况。

  • ERP系统的日期字段格式是YYYYMMDD
  • CRM系统的日期字段格式是YYYY-MM-DD
  • 两个系统都有status字段,但枚举值含义完全不同

入湖前需要在规则表中为每个源系统单独配置格式转换和格式校验规则,统一后再落盘,长三角地区数据入湖服务商在实施制造企业项目时,通常会先做字段映射规范,再配置校验规则,否则多源接入后字段口径会越来越乱。

数据质量校验工具价格与选型考虑

开源与商用工具的投入差异

  • 开源方案:Apache Griffin、Great Expectations、Deequ等,通常没有软件采购成本,但需要投入实施人力
  • 商用平台:提供可视化和规则推荐,采购成本按照部署方式不同有所差异,国内报价多数按数据量或规则数量计费

据行业公开信息,开源工具适合技术团队较强的企业,商用工具适合缺乏数据治理经验但预算充足的企业,总的来看,商用工具整体投入通常高于开源方案,但实施周期更短、维护成本更低。

按数据量计费还是按规则数计费更划算

没有标准答案,数据量增长快但规则数量稳定的团队,按规则数授权更可控,数据量小但质量规则复杂的团队,按数据量计费可能更划算,自己用开源工具做二次开发,初期投入大,长期边际成本低。

数据入湖流程可加质量校验拦截脏数据再落盘,怎样做数据质量校验?

选型前先估算:

  • 未来一年数据量增长倍数
  • 质量规则数量和复杂度
  • 团队内是否有熟悉开源组件的人
  • 运维投入是否能长期支撑

把这几项列清楚,再向供应商要报价,对比会清晰很多。

数据入湖质量校验的实施建议

规则分层与阈值设置

  • L1硬校验:空值、类型、枚举、主键唯一,违反直接阻断入湖
  • L2软校验:波动范围、比例异常、时效性,超过阈值告警不阻断
  • L3观察规则:数据分布变化、字段关联异常,只记录不告警

阈值设置不要拍脑袋,先跑历史数据统计基线,再设定±3倍标准差或分位数,没有历史数据的表,先观察两周再上硬校验。

监控告警与阻断策略

  • 校验失败数据写入quarantine表,并记录rule_id、失败原因、源系统批次号
  • 连续10分钟质检失败率超过配置值时,自动暂停入湖任务
  • 日常巡检使用质量报告,按表维度展示通过率、失败原因分布、拦截量

数据入湖流程中加质量校验拦脏数据,不是一次性配置完就结束,需要按照表的重要程度、数据增长速度、源系统变更频率持续调整规则。

数据入湖质量校验常见问题解答

数据入湖流程中质量校验应该放在哪个阶段执行?

放在写入数据湖存储之前的最后一个环节,这个位置可以拿到已经完成格式转换的数据,同时能在数据落盘前拦截,如果放在源系统端,无法覆盖跨源一致性问题;如果放在落盘后,清理成本会明显增加。

数据质量校验工具价格一般多少?

没有统一报价,开源工具没有授权费用,但需要自行部署和维护,商用平台多数按年订阅或按数据量阶梯定价,团队可以先评估一年的数据增长量和规则数量,再对比开源维护人力和商用订阅费。

数据湖和数仓哪个更适合做脏数据拦截落地?

数据湖原始区做基础质量拦截更合适,数仓模型层再做复杂业务规则校验,可以形成两层过滤,原始区拦住格式和完整性错误,数仓层拦住业务语义错误,落盘前的基础校验是数据湖建设的基本动作,不做这一步,后续任何数据治理动作都是在补救。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱