sparklint: Spark SQL linter
Статический анализатор Spark SQL запросов на основе Catalyst
Quick start
GitHub Action
- Github Action не опубликован, пример есть в текущем пайплайне
- Пример работы: ./example/action_result.md
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 с настройками линтера и дополнительными функциями и они будут добавлены в райнтайме.