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 benchmark against the active engine
lakebench query <config> Execute SQL queries against the active engine
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.1.tar.gz (250.9 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.1-py3-none-any.whl (216.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lakebench_k8s-1.0.1.tar.gz
  • Upload date:
  • Size: 250.9 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.1.tar.gz
Algorithm Hash digest
SHA256 6f59b8cc4a7275bfa6ddb1bb7e82dbe6d1b0a9c61bd721e898e9ee9fed3a27b6
MD5 f9f4b4d45f16c1a9cf2f2020cef4e429
BLAKE2b-256 b9068c98b131198e5fb09e8ed06023503b5cf0413de1ee65fc6122d5748d68e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for lakebench_k8s-1.0.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: lakebench_k8s-1.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 539b5dc0cb4b55ba2692f8c9a9364d3bf3d38e0127923fdcca3f424053be1c38
MD5 45a9d7c41c08c2295f5c0c1b5de0ab58
BLAKE2b-256 72e4124b1f4b2381a490e30fa51674e5a54a2b5c5e95a5aea5cd8b729982d147

See more details on using hashes here.

Provenance

The following attestation bundles were made for lakebench_k8s-1.0.1-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