pyspark-mcp

pyspark-mcp

AnnasMazharMIT
Сервер переносит SQL-запросы в PySpark и автоматизирует работу с AWS Glue. Разработчики данных применяют его при миграции на Spark, создании ETL-пайплайнов и рефакторинге кода. В основе сервера — библиотека SQLGlot. Она распознаёт диалект исходного запроса и конвертирует его в Spark SQL или DataFrame API. Если точное преобразование невозможно, сервер выдаёт эквивалент на Spark SQL и рекомендации по доработке.

Установка

uvx pyspark-tools

Характеристики

Общее

  • СтатусСообщество
  • РазработчикAnnasMazhar
  • ЛицензияMIT

Технологии

  • Языки
    Python
  • Транспорт
    stdio

Описание

Возможности

  • Конвертирует SQL в PySpark DataFrame API с автоматическим определением исходного диалекта
  • Переносит код между PostgreSQL, Oracle, Redshift, MySQL, Snowflake и Spark SQL
  • Создаёт готовые скрипты для AWS Glue с настройками S3 и Data Catalog
  • Преобразует DataFrame в DynamicFrame и обратно для Glue ETL
  • Генерирует описания таблиц для AWS Glue Data Catalog
  • Строит задания для инкрементальной загрузки (CDC)
  • Анализирует S3-корзины и советует схему партиционирования
  • Проверяет PySpark-код на узкие места, дублирование и неоптимальные операции
  • Рекомендует broadcast или shuffle join для конкретных данных
  • Конвертирует сотни SQL-файлов одной командой через пакетную обработку

Как подключить

1. Установите сервер

Самый простой способ — запустить сервер через uvx: uvx pyspark-tools.

Также можно установить из репозитория: склонируйте проект и выполните pip install -e ., после чего запустите командой pyspark-mcp.

2. Настройте клиент

Для Claude Desktop добавьте в конфигурационный файл:

{ "mcpServers": { "pyspark": { "command": "uvx", "args": ["pyspark-tools"] } } }

Для Hermes Agent пропишите аналогичный блок в ~/.hermes/config.yaml.

3. Перезапустите клиент

После сохранения конфигурации закройте и откройте клиент заново. Инструменты сервера появятся в списке доступных.

Примеры запросов

  • «Сконвертируй этот SQL-запрос с оконными функциями и MERGE из Oracle в PySpark DataFrame API. Если полная конвертация невозможна, дай эквивалент на Spark SQL с пояснениями.»
  • «Проанализируй PySpark-код из файла etl.py. Найди узкие места и операции, которые можно оптимизировать с помощью broadcast join.»
  • «Создай шаблон AWS Glue job для чтения CSV-файлов из S3, очистки данных и записи в Parquet в Data Catalog.»
  • «У меня сто SQL-файлов для Redshift. Запусти пакетную конвертацию в Spark SQL и сохрани результаты в папку /output.»
  • «Как лучше партиционировать таблицу размером 1 ТБ по дате? Посоветуй количество партиций и формат хранения.»

Технические детали

  • Язык: Python (3.11+)
  • Транспорт: stdio
  • Лицензия: MIT
  • Совместимые клиенты: Claude Desktop, Hermes Agent, любой MCP-клиент с поддержкой stdio
  • Ключевая зависимость: SQLGlot (для разбора и транспиляции SQL)

Поделиться