Skip to main content

Deploy and benchmark lakehouse stacks on Kubernetes

Project description

Lakebench

CLI tool for deploying and benchmarking lakehouse architectures on Kubernetes.

Note: This package is published as lakebench-k8s on PyPI. Install with pip install lakebench-k8s. The CLI command is lakebench.

Choosing between Hive and Polaris, Iceberg and Delta, or sizing Spark for 100 GB vs 10 TB shouldn't require weeks of manual setup. Lakebench deploys a complete lakehouse stack from a single YAML file, generates realistic data at any scale, runs the pipeline, benchmarks query performance, and tears everything down --so you can focus on comparing architectures, not plumbing.

Installation

pip install lakebench-k8s

Or with pipx: pipx install lakebench-k8s

Pre-built binaries (no Python required) are available on GitHub Releases.

Prerequisites

  • Python 3.10+
  • kubectl and helm on PATH
  • Kubernetes cluster (1.26+)
  • S3-compatible object storage (FlashBlade, MinIO, AWS S3, etc.)

Quick Start

# 1. Generate config (interactive prompts for S3 details)
lakebench init --interactive

# 2. Deploy infrastructure
lakebench deploy lakebench.yaml

# 3. Generate test data
lakebench generate lakebench.yaml --wait

# 4. Run the pipeline + benchmark
lakebench run lakebench.yaml

# 5. View results
lakebench report

# 6. Tear down
lakebench destroy lakebench.yaml

Commands

Command Description
lakebench init Generate a starter configuration file
lakebench validate <config> Validate config and test connectivity
lakebench info <config> Show configuration summary
lakebench recommend Recommend cluster sizing for a scale factor
lakebench deploy <config> Deploy all infrastructure
lakebench generate <config> Generate synthetic data to bronze bucket
lakebench run <config> Execute the medallion pipeline with metrics
lakebench benchmark <config> Run 8-query Trino benchmark
lakebench query <config> Execute SQL queries against Trino
lakebench status [config] Show deployment status
lakebench logs <component> [config] Stream logs from a component
lakebench report Generate HTML benchmark report
lakebench destroy <config> Tear down all resources

How It Works

Lakebench deploys a three-layer stack on Kubernetes:

  1. Platform -- Kubernetes namespace, S3 secrets, PostgreSQL (metadata store)
  2. Data architecture -- catalog (Hive or Polaris), table format (Iceberg or Delta), query engine (Trino, Spark Thrift, or DuckDB), all wired together via recipes
  3. Observability -- optional Prometheus + Grafana stack for platform metrics

Once deployed, the pipeline runs three Spark jobs in sequence:

Raw Parquet (S3)  -->  Bronze (validate, deduplicate)
                  -->  Silver (normalize, enrich -- Iceberg table)
                  -->  Gold (aggregate -- Iceberg table)
                  -->  Benchmark (8 analytical queries via query engine)

The benchmark produces an HTML report with query latencies, throughput scores, and optional platform metrics (CPU, memory, S3 I/O per pod). See the Architecture doc for the full picture.

Component Versions

Component Version
Apache Spark 3.5.4
Spark Operator 2.4.0 (Kubeflow)
Apache Iceberg 1.10.1
Delta Lake 3.0.0
Hive Metastore 3.1.3 (Stackable 25.7.0)
Apache Polaris 1.3.0-incubating
Trino 479
DuckDB bundled (Python 3.11)
PostgreSQL 17

All versions are configurable. See Supported Components for the full matrix of components, recipes, and override options.

Documentation

Full documentation is in the docs/ directory:

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lakebench_k8s-1.0.0.tar.gz (250.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lakebench_k8s-1.0.0-py3-none-any.whl (216.0 kB view details)

Uploaded Python 3

File details

Details for the file lakebench_k8s-1.0.0.tar.gz.

File metadata

  • Download URL: lakebench_k8s-1.0.0.tar.gz
  • Upload date:
  • Size: 250.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lakebench_k8s-1.0.0.tar.gz
Algorithm Hash digest
SHA256 140cce7ba682a4682e3f5827069b9f80958e836dfc69193344ac861145b14105
MD5 5566f79ec31683c16d8576c96d46a4f1
BLAKE2b-256 a1f6e4e766280df8d1e0dc3951302d0e22120261284a2145fdec7c881a083ed8

See more details on using hashes here.

Provenance

The following attestation bundles were made for lakebench_k8s-1.0.0.tar.gz:

Publisher: release.yml on PureStorage-OpenConnect/lakebench-k8s

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lakebench_k8s-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: lakebench_k8s-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 216.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lakebench_k8s-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d3db7ca928f9c75e8d18ffda9039a61cfc3f5579d3e8ed4b705fbe1781073866
MD5 456b1670e1ed1be5a7bd67cb495f6d25
BLAKE2b-256 2ec7a7c5fd3de56bb3324e2ff14e0415cb2ea3bb92f23dcf5b5959cc84beff26

See more details on using hashes here.

Provenance

The following attestation bundles were made for lakebench_k8s-1.0.0-py3-none-any.whl:

Publisher: release.yml on PureStorage-OpenConnect/lakebench-k8s

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page