sparklint: Spark SQL linter

Java CI with Maven

Статический анализатор Spark SQL запросов на основе Catalyst

Quick start

GitHub Action

Locally:

  • CLI mode: check one query

    docker run ghcr.io/egorklimov/sparklint/sparklint-cli:latest \
      cli \
      "select a from b"
  • CI mode: check all sql files in folder:

    docker run \
      -v /path/on/host:/path/inside/container \
      ghcr.io/egorklimov/sparklint/sparklint-cli:latest \
      ci \
      <sqlRootDir/inside/container>

    e.g.:

    docker run \
      -v /path/to/cloned/sparklint/example:/example \
      ghcr.io/egorklimov/sparklint/sparklint-cli:latest \
      ci \
      /example

Описание

Поддерживается:

  • Синтаксический анализ: строится на основе грамматики Spark SQL с помощью внутреннего парсера Catalyst;
  • Стилистический анализ: используется форматтер запросов, также можно добавить свое правило, позволяющее менять запрос и т.п.;
  • Статические оптимизации: доступны все оптимизации Spark SQL (Catalyst), не требующие запуска Spark сессии;
  • Параллельный анализ запросов;
  • Добавление пользовательских правил в рантайме;
  • Построение плана запроса.

(WIP) DSL

В корне проекта можно создать файл .sparklint.kts с настройками линтера и дополнительными функциями и они будут добавлены в райнтайме.

GitHub

View Github