deequ

用写单元测试的方式给大数据做全量体检

Deequ 是 AWS 开源、构建在 Apache Spark 之上的数据质量校验库,核心思路是把数据质量约束写成类似单元测试的断言,在超大规模数据集上批量扫描并给出量化结果。它解决的是数据管道中“数据悄悄变脏却无人发现”的问题:上游 schema 变更、字段缺失、数值越界、唯一性破坏等,传统做法靠人工写 SQL 抽查,既慢又难覆盖全量。Deequ 提供约束定义、指标计算、约束验证和异常检测四大能力,可对全量数据计算完整性、唯一性、分布、相关性等指标,并支持把结果写入指标仓库做趋势对比,从而发现数据随时间的漂移。它天然适配 Spark,能横向扩展到 TB 级数据,适合在 ETL/ELT 流程中作为质量门禁,也常用于数据仓库入仓前校验和机器学习特征表的健康监控。

开源 free 基础设施
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 3647
维护状态 活跃
是否开源
定价模式 free

项目数据

分类基础设施
开发团队awslabs
所属国家
官网地址
定价模式free
价格说明开源免费,Apache 2.0 许可证
访问状态
是否开源
开源协议Apache-2.0
主要语言Scala
技术栈/模型dataquality,scala,spark,unit-testing
GitHub 星标★ 3647
30天Star增速
HF 下载量
上线时间2018-08-07 00:00:00
最近更新2026-09-18 00:00:00
维护状态活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-09-21
浏览次数0

使用教程

难度:进阶 约 10 分钟 部署方式:库/依赖 5 步

环境要求

  • Java 11(Deequ 2.1.0 及以后版本要求;2.0.x 版本要求 Java 8)
  • Apache Spark(需选择与 Deequ 构件后缀匹配的版本,如 Spark 3.5.x)
  • 构建工具:Maven 或 sbt
  • Scala 2.12(较新 Spark 版本使用;Spark 2.2.x/2.3.x 使用 Scala 2.11)

安装与启动步骤

  1. 1确认 Spark 版本

    先确认你的应用使用的 Apache Spark 版本,再据此挑选后缀匹配的 Deequ 构件,版本不匹配会导致运行失败。

  2. 2选择 Deequ 版本

    从 Maven 中央仓库的 deequ 可用版本列表中,选择与 Spark 版本后缀一致的最新 Deequ 2.x 发布版。

  3. 3添加 Maven 依赖

    在 Maven 项目的 pom.xml 中加入 deequ 依赖,artifactId 为 deequ,version 后缀需与 Spark 版本对应。

    
      com.amazon.deequ
      deequ
      2.0.21-spark-3.5
    
  4. 4或添加 sbt 依赖

    如果使用 sbt 项目,在 build.sbt 中用 libraryDependencies 声明同版本依赖,效果与 Maven 一致。

    libraryDependencies += "com.amazon.deequ" % "deequ" % "2.0.21-spark-3.5"
  5. 5在 Spark 作业中调用

    重新加载依赖后,在基于 Spark 的 Scala 项目中导入 com.amazon.deequ 相关类,即可定义数据质量约束并执行校验。

关键配置

配置项必填说明示例
groupIdMaven 坐标组织名,固定为 com.amazon.deequcom.amazon.deequ
artifactIdMaven 坐标构件名,固定为 deequdeequ
versionDeequ 版本,后缀必须与所用 Spark 版本匹配2.0.21-spark-3.5

如何确认成功

项目能成功解析 com.amazon.deequ:deequ 依赖并编译,运行 Spark 作业时可正常导入 Deequ 类,无版本冲突报错。

常见问题

Q:应该选哪个 Deequ 版本?

A:版本后缀必须与应用的 Spark 版本一致,例如 Spark 3.1.x 用 -spark-3.1、Spark 3.5.x 用 -spark-3.5;Spark 3.0.x 及更早需用 Deequ 1.x。

Q:Java 版本有什么要求?

A:Deequ 2.1.0 及以后版本要求 Java 11,较早的 2.0.x 版本要求 Java 8,选错会无法运行。

Q:Scala 版本怎么选?

A:Spark 2.2.x 和 2.3.x 的 Deequ 发布版使用 Scala 2.11,后续支持的 Spark 版本使用 Scala 2.12。

Q:Python 用户怎么用?

A:可以使用 PyDeequ,它是 Deequ 的 Python 接口,在 GitHub、readthedocs 和 PyPI 上均可获取。

注意事项

  • 不要臆造依赖版本,务必到 Maven 中央仓库 deequ 的 available versions 页面挑选与 Spark 匹配的最新发布版。
  • Spark 3.0 的支持维护在 legacy-spark-3.0 分支。
  • Deequ 构建在 Apache Spark 之上,属于库/依赖,不是独立可执行服务,需集成进你的 Spark 项目使用。

核心亮点

  • 约束即代码,可像单元测试一样在 CI/调度中自动执行并失败告警
  • 基于 Spark 分布式计算,支持全量扫描而非抽样,适合 TB 级数据
  • 内置异常检测,可对比历史指标发现数据分布漂移,而非只看固定阈值

不足之处

  • 强依赖 Spark 与 Scala 生态,非 Spark 技术栈团队接入成本高
  • 约束与指标配置偏代码化,缺少开箱即用的可视化界面,运维门槛较高

适用场景

  • ETL/ELT 管道入仓前的数据质量门禁
  • 数据仓库表的主键唯一性、非空与取值域巡检
  • 机器学习特征表的分布漂移监控与告警

替代项目

Great Expectations、Soda Core

项目介绍

deequ 是基础设施领域的开源项目,由 awslabs 开发,2018 年首次发布。

在全站 12,822 个收录项目中,它的 GitHub 星标数(3,647)位列前 30%,在基础设施分类中处于中上游。

项目目前处于活跃维护状态,最近一次代码更新于 2026-09-18。开源免费,Apache 2.0 许可证。

它主要面向的使用场景是:ETL/ELT管道入仓前的数据质量门禁。同类可对比的替代方案包括 Great Expectations、Soda Core。

上一篇:freebucks-proxy

下一篇:没有了!

同类项目推荐

freebuff-proxy 开源

聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。

OpenAI-compatible gateway for FreeBuff coding models. Token pool, session lifecycle,···

★ 202 2026-08-20
microduck 开源

用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。

A Tiny biped duck robot

★ 8576 2026-09-10
soperator 开源

用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。

Run Slurm in Kubernetes

★ 437 2026-08-10
ollama 开源

一条命令本地跑起大模型,免费、私密、不卡顿

Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···

★ 181269 2026-08-09