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)

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.1.tar.gz (36.4 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.1-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spark_viewer_tui-0.1.1.tar.gz
  • Upload date:
  • Size: 36.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for spark_viewer_tui-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a3ef0e0392462ed5827e65e671cf9221968a9c406ebe4c4faa163e9abdb232e4
MD5 8743fca90b37fc7d6c3145fb6609e7c6
BLAKE2b-256 a95664bf1bf71afcce296a48e6c8c99d608392e300a1fcf37f3fb3baaa2750b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for spark_viewer_tui-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2d0457d82c1bf285916e36ddaaad347d7c0e703d3bd1e787e3351bd7e5d74ba9
MD5 69250365ef971a0c90a8eecb6690fd9d
BLAKE2b-256 4ab571c4eed5808262f97d814f81617d634781a59b48dfbfd6c66fdf1e8a80ea

See more details on using hashes here.

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