whatisgithub

What is deequ?

awslabs/deequ — explained in plain English

Analysis updated 2026-05-18

3,615ScalaAudience · developerComplexity · 3/5LicenseSetup · moderate

In one sentence

Deequ writes unit tests for your data, checking things like missing values, duplicates, and bad ranges on huge Spark datasets before they cause problems downstream.

Mindmap

mindmap
  root((Deequ))
    What it does
      Unit tests for data
      Runs on Spark
      Flags bad rows
    Tech stack
      Scala
      Apache Spark
      Maven Central
    Use cases
      Catch missing values
      Check uniqueness
      Track quality over time
      Profile large datasets
    Audience
      Data engineers
      Spark teams
      Python users via PyDeequ

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Catch missing or null values in a data pipeline before they reach a report or model

USE CASE 2

Verify that an ID column stays unique and complete as new data arrives

USE CASE 3

Track data quality metrics over time to spot when a source starts degrading

USE CASE 4

Profile a large unfamiliar dataset to understand its shape before building on it

What is it built with?

ScalaApache SparkJavaMaven

How does it compare?

awslabs/deequchipsalliance/rocket-chipscala-native/scala-native
Stars3,6153,7684,654
LanguageScalaScalaScala
Setup difficultymoderatehardhard
Complexity3/55/54/5
Audiencedeveloperresearcherdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Java 8 and a Spark version matching the Deequ release you pick.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

So what is it?

Deequ is a library from AWS Labs that lets data engineers write quality checks for large datasets, in the same spirit as a programmer writes unit tests for code. If you have a table of customer records or product listings and you want to verify that certain columns are never empty, that IDs are always unique, or that numeric fields never go negative, Deequ gives you a structured way to express and enforce those rules automatically. The library runs on top of Apache Spark, which is a system designed for processing very large amounts of data across multiple computers. That means Deequ can handle datasets with billions of rows that live in data warehouses or distributed file systems, not just small local files. You feed it tabular data, such as CSV files, database tables, or flattened JSON, and it translates your quality rules into Spark jobs that scan the data and report back. The workflow is straightforward. You define a set of constraints, for example that a column should be at least 95% filled in, that a field should only contain certain allowed values, or that the median of a numeric column should fall within a certain range. Deequ checks each constraint against the actual data and tells you exactly which rules were violated and by how much. If 80% of a column is filled when you expected 100%, you see that number. You can then quarantine or fix bad records before they reach downstream applications or machine learning models. Beyond one-off checks, the library includes tools for tracking metrics over time so you can spot when data quality starts to drift, and a data profiling mode that automatically summarizes what a dataset looks like without you needing to specify rules in advance. Python developers can access the same functionality through PyDeequ, a separate package that wraps this library. Deequ is aimed at data engineers and analysts who work in Spark environments and want a repeatable, automated way to catch data problems early rather than discovering them after a pipeline has already delivered bad results.

Copy-paste prompts

Prompt 1
Show me how to write a Deequ VerificationSuite that checks a Spark DataFrame for null values and duplicate IDs.
Prompt 2
Explain how Deequ's constraint checks work compared to writing manual data validation code.
Prompt 3
Help me set up Deequ's MetricsRepository to track data quality trends over time.
Prompt 4
Write a Deequ check that flags a column as invalid if more than 5 percent of its values are negative.

Frequently asked questions

What is deequ?

Deequ writes unit tests for your data, checking things like missing values, duplicates, and bad ranges on huge Spark datasets before they cause problems downstream.

What language is deequ written in?

Mainly Scala. The stack also includes Scala, Apache Spark, Java.

What license does deequ use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is deequ to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is deequ for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.