Skip to main content

A terminal UI for browsing and querying Delta/Parquet tables with Spark

Project description

spark-viewer-tui

A terminal UI for browsing and querying Delta Lake and Parquet tables with Apache Spark.

Built with Textual and PySpark.

GitHub: https://github.com/eritondev-stack/spark-viewer-tui

Features

  • Catalog Browser - Sidebar tree with databases and tables
  • SQL Editor - Write and execute Spark SQL queries with syntax highlighting
  • Results Table - View query results with column types and row count
  • Scan Paths - Auto-register Delta/Parquet folders as Spark tables
  • Rescan - Refresh tables on demand (folders are live, Ctrl+S rescans)
  • Save/Load Queries - Persist frequently used queries
  • Themes - Multiple color themes (Transparent, Dracula, Gruvbox)
  • Maximize - Focus on editor or results in full screen

Requirements

  • Python 3.12+
  • Java 17 (for PySpark) — must be available via JAVA_HOME or java in your PATH

Java Setup

macOS (Homebrew):

brew install openjdk@17
export JAVA_HOME=$(/usr/libexec/java_home -v 17)

Linux (Debian/Ubuntu):

sudo apt install openjdk-17-jdk
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

Add the export JAVA_HOME=... line to your ~/.bashrc or ~/.zshrc to make it persistent.

Verify:

java -version

Installation

pip install spark-viewer-tui

Or with uv:

uv pip install spark-viewer-tui

Usage

spark-viewer

Or run directly from source:

uv run python app.py

Keyboard Shortcuts

Key Action
F2 Spark Configuration (metastore, warehouse, scan paths)
F3 Save current query
F4 Load saved query
Ctrl+S Start Spark session / Rescan paths
Ctrl+E Execute SQL query
Ctrl+T Change theme
Ctrl+W Maximize editor or results
Ctrl+C Exit

Getting Started

  1. Run spark-viewer
  2. Press F2 to configure:
    • Metastore DB Path - Where Spark stores metadata (e.g. /tmp/metastore_db)
    • Warehouse Dir Path - Spark warehouse directory (e.g. /tmp/spark-warehouse)
    • Scan Paths - Folders to scan for Delta/Parquet tables
  3. Press Ctrl+S to start the Spark session
  4. Click a table in the sidebar or write SQL in the editor
  5. Press Ctrl+E to run the query

Seed (Example Data)

The package includes a seed command that creates 6 Delta tables with 500 rows each (employees, products, orders, customers, logs, metrics). Useful for testing and exploring the tool.

# Uses paths from spark_config.json
spark-viewer-seed

# Or specify paths manually
spark-viewer-seed --metastore-db ./metastore_db --warehouse-dir ./spark-warehouse

After seeding, run spark-viewer and press Ctrl+S to load the tables.

Scan Paths

Scan paths auto-register Delta and Parquet tables from a directory. Each scan path has a database name and a folder path.

db_name: vendas
path:    /data/warehouse

Subfolders are registered as tables:

  • Subfolder with _delta_log/ -> Delta table
  • Subfolder with .parquet files -> Parquet table

Every Ctrl+S drops and recreates the databases from scan paths, keeping tables in sync with the filesystem.

Configuration

Settings are saved in spark_config.json in the project directory:

{
  "metastore_db": "/tmp/metastore_db",
  "warehouse_dir": "/tmp/spark-warehouse",
  "scan_paths": [
    { "path": "/data/warehouse", "db_name": "vendas" },
    { "path": "/data/lake", "db_name": "analytics" }
  ]
}

Project Structure

spark-viewer-tui/
├── app.py              # Main application
├── seed.py             # Seed example Delta tables
├── config.py           # Configuration management
├── spark_manager.py    # Spark session and table registration
├── queries.py          # Query persistence
├── themes.py           # Theme system
├── screens/
│   ├── spark_config.py    # Spark config modal (F2)
│   ├── save_query.py      # Save query modal (F3)
│   ├── load_query.py      # Load query modal (F4)
│   └── theme_selector.py  # Theme selector modal (Ctrl+T)
└── pyproject.toml

License

MIT

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

spark_viewer_tui-0.1.3.tar.gz (36.8 kB view details)

Uploaded Source

Built Distribution

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

spark_viewer_tui-0.1.3-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file spark_viewer_tui-0.1.3.tar.gz.

File metadata

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

File hashes

Hashes for spark_viewer_tui-0.1.3.tar.gz
Algorithm Hash digest
SHA256 1e0c00d0ceb1e97709274e3348a1176f4d859d58c0a9196872f1d182a77671ed
MD5 99bac63c5f98b05402bcb814a00689c5
BLAKE2b-256 6faafb5a439d90e0e4e6b09da45e4a2de13c07b0fc0ec3ba82aeda981af8b8dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for spark_viewer_tui-0.1.3.tar.gz:

Publisher: publish.yml on eritondev-stack/spark-viewer-tui

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

File details

Details for the file spark_viewer_tui-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for spark_viewer_tui-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2a92b9fd2c80462033dd112584aeca5020271e5bbb6152b00c47dba6d69dec87
MD5 e5a2de1fee4b20b21f237216c5404ccd
BLAKE2b-256 ad22c6a455084a1754c3c105643f0f2813f82c3cb1061eda4d8f8960b0952226

See more details on using hashes here.

Provenance

The following attestation bundles were made for spark_viewer_tui-0.1.3-py3-none-any.whl:

Publisher: publish.yml on eritondev-stack/spark-viewer-tui

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