datafusion-contrib/tpcgen-rs

TPC-H benchmark data generation in pure Rust

Rust

261

543 commits

updated Oct 19, 2026

See the code

README

tpcgen-rs: Quickly and Easily Create TPC-* Benchmark Data

[!NOTE] Made with ❤️ by @clflushopt, @alamb and @kevinjqliu

Originally clflushopt/tpchgen-rs, the project is now maintained at datafusion-contrib/tpcgen-rs

Apache licensed Build Status

Modern, blazing fast and easy to use TPC-H and TPC-DS benchmark data generators.

Goal

Democratize the comparison of analytical systems by making it easy to efficiently generate benchmark data in modern formats such as Apache Parquet, Apache Arrow, and CSV.

Features

  1. Blazing Speed 🚀
  2. Easy to Use: CLI or embeddable libraries
  3. Obsessively Tested: byte-for-byte identical with the reference generators 📋
  4. Resource Efficient: multi-core and constant memory use 🧠

Quick Start

tpcgen-cli is distributed as a Python package. Run it with uvx:

uvx tpcgen-cli tpch parquet -s 1 --output-dir /tmp/tpch
uvx tpcgen-cli tpcds parquet -s 1 --output-dir /tmp/tpcds

Or install it with pip:

python -m pip install tpcgen-cli
tpcgen-cli tpch parquet -s 1 --output-dir /tmp/tpch

See the tpcgen-cli README for more examples.

Representative Performance (10x Faster)

Representative Generation Performance

Time to generate TPC-H Scale Factor 100 data in Parquet format. See the performance spreadsheet for details and more comparisons.

Sub projects

ProjectDescription
tpcgen-cliCommand line tool to generate TPC-H and TPC-DS data in multiple formats
tpchgen-cliCommand line tool to generate only TPC-H data in multiple formats (kept for backwards compatibility)
tpchgenRust library to generate TPC-H data (zero dependencies)
tpchgen-arrowRust library to generate TPC-H data in Apache Arrow format
tpcdsgenRust library to generate TPC-DS data (zero dependencies)
tpcdsgen-arrowRust library to generate TPC-DS data in Apache Arrow format

Testing

We go to great lengths to ensure our data generators produce the same exact bytes as the reference implementations, both for single and multi-part output. Our multi-level strategy for ensuring correctness is detailed in TESTING.md and includes comparing the output of our generators to the original reference implementations as part of CI.

Contributing

Pull requests are welcome. For major changes, please open an issue first for discussion. See our contributors guide for more details.

Architecture

Please see architecture guide for details on how the code is structured.

License

The project is licensed under the Apache License 2.0.

database-benchmarking
databases
dbgen
tpch

datafusion-contrib/tpcgen-rs

TPC-H benchmark data generation in pure Rust

Rust

261

543 commits

updated Oct 19, 2026

See the code

README

tpcgen-rs: Quickly and Easily Create TPC-* Benchmark Data

[!NOTE] Made with ❤️ by @clflushopt, @alamb and @kevinjqliu

Originally clflushopt/tpchgen-rs, the project is now maintained at datafusion-contrib/tpcgen-rs

Apache licensed Build Status

Modern, blazing fast and easy to use TPC-H and TPC-DS benchmark data generators.

Goal

Democratize the comparison of analytical systems by making it easy to efficiently generate benchmark data in modern formats such as Apache Parquet, Apache Arrow, and CSV.

Features

  1. Blazing Speed 🚀
  2. Easy to Use: CLI or embeddable libraries
  3. Obsessively Tested: byte-for-byte identical with the reference generators 📋
  4. Resource Efficient: multi-core and constant memory use 🧠

Quick Start

tpcgen-cli is distributed as a Python package. Run it with uvx:

uvx tpcgen-cli tpch parquet -s 1 --output-dir /tmp/tpch
uvx tpcgen-cli tpcds parquet -s 1 --output-dir /tmp/tpcds

Or install it with pip:

python -m pip install tpcgen-cli
tpcgen-cli tpch parquet -s 1 --output-dir /tmp/tpch

See the tpcgen-cli README for more examples.

Representative Performance (10x Faster)

Representative Generation Performance

Time to generate TPC-H Scale Factor 100 data in Parquet format. See the performance spreadsheet for details and more comparisons.

Sub projects

ProjectDescription
tpcgen-cliCommand line tool to generate TPC-H and TPC-DS data in multiple formats
tpchgen-cliCommand line tool to generate only TPC-H data in multiple formats (kept for backwards compatibility)
tpchgenRust library to generate TPC-H data (zero dependencies)
tpchgen-arrowRust library to generate TPC-H data in Apache Arrow format
tpcdsgenRust library to generate TPC-DS data (zero dependencies)
tpcdsgen-arrowRust library to generate TPC-DS data in Apache Arrow format

Testing

We go to great lengths to ensure our data generators produce the same exact bytes as the reference implementations, both for single and multi-part output. Our multi-level strategy for ensuring correctness is detailed in TESTING.md and includes comparing the output of our generators to the original reference implementations as part of CI.

Contributing

Pull requests are welcome. For major changes, please open an issue first for discussion. See our contributors guide for more details.

Architecture

Please see architecture guide for details on how the code is structured.

License

The project is licensed under the Apache License 2.0.

database-benchmarking
databases
dbgen
tpch

Significant stargazers

Ismaël Mejía

208 followers · starred Jul 2026

Ning Sun

1,095 followers · starred Apr 2025

Jon Mease

272 followers · starred Sep 2025

sundyli

688 followers · starred Apr 2025