Spark查询优化服务器

PySpark MCP Server是一个轻量级的Model Context Protocol(MCP)服务器实现,用于Apache Spark,主要功能是提供查询优化和数据分析支持。

  • by SemyonSinchenko
  • Python
  • 本地部署
  • 18 星标
  • 更新于
在 GitHub 查看 SemyonSinchenko/pyspark-mcp-server

使用说明

hi#PySpark MCP服务器

描述

PySpark MCP Server是Apache Spark模型上下文协议(MCP)的轻量级服务器实现。

此MCP服务器的主要目的是使用AI系统促进查询优化。它提供了从Spark到AI系统的逻辑和物理查询计划,以及额外的查询计划信息。此外,服务器公开目录和表信息,从而在Spark支持的数据湖中实现数据发现功能。

快速开始

安装

pip install pyspark-mcp

运行服务器

安装后,使用 pyspark-mcp 启动服务器的命令:

pyspark-mcp --master "local[*]" --host 127.0.0.1 --port 8090

CLI会自动处理 spark-submit 配置。支持所有标准spark提交选项:

# With additional Spark configuration
pyspark-mcp --master "local[*]" --conf spark.driver.memory=4g

# YARN cluster mode
pyspark-mcp --master yarn --deploy-mode client --num-executors 4

# With additional JARs
pyspark-mcp --master "local[*]" --jars /path/to/connector.jar

# Preview the spark-submit command without running
pyspark-mcp --master "local[*]" --dry-run

# With GraphFrames package
pyspark-mcp --master "local[*]" --packages io.graphframes:graphframes-spark3_2.12:0.10.1

CLI选项

选项 默认值 描述
--master local[*] Spark主URL
--host 127.0.0.1 MCP服务器主机地址
--port 8090 MCP服务器端口号
--spark-submit spark-submit 触发提交可执行文件的路径
--dry-run - 不执行打印命令

所有spark提交选项(--conf, --jars, --packages, --executor-memory等等)自动通过。

将正在运行的MCP添加到Claude代码中

# Must run one server on a different port per Claude instance
claude mcp add --transport http pyspark-mcp http://127.0.0.1:8090/mcp

依赖项

  • Python>=3.11,<4.0
  • fastmcp>=2.10.6
  • 日志
  • pyspark>=3.5

捆绑式MCP工具

PySpark MCP服务器中包含以下工具:

MCP工具 说明
获取PySpark的版本 从当前PySpark会话中获取版本号
获取查询的分析计划 从提供的SQL查询中提取分析的逻辑计划
获取查询的优化计划 从提供的SQL查询中提取优化的逻辑计划
获取查询结果的大小估计 从查询计划解释中提取大小和单位
从查询计划中获取表 从查询计划解释中提取所有表(关系)
获取当前Spark目录 获取当前SparkSession的默认目录
检查数据库是否存在 检查当前目录中是否存在具有给定名称的数据库
获取当前默认数据库 从默认目录中获取当前默认的数据库
列出当前目录中的所有数据库 列出当前目录的所有可用数据库
列出可用目录 列出当前SparkSession中可用的所有目录
列出当前目录中的表 列出当前Spark目录中的所有可用表
获取表的注释 提取表的注释或返回空字符串
获取表模式 获取目录中表的spark模式
返回SQL查询结果的模式 运行查询,获取结果,获取结果的模式,并返回模式的JSON值
读取文本文件的前N行 以纯文本形式读取文件的前N行。有助于确定格式