mcpField
S
Sail MCP Server for Spark SQL

Sail MCP Server for Spark SQL

ローカル
lakesail.comデータベース3.5k今日更新

Sail MCP Server for Spark SQL について

Sail は Rust で書かれた Apache Spark のドロップイン代替であり、バッチ処理、ストリーム処理、計算負荷の高い AI ワークロードを統合します。JVM を使わずに既存の PySpark コードを維持したいデータエンジニアを対象としています。

主な機能

  1. 01Spark Connect プロトコルへの対応
  2. 02Spark SQL と DataFrame API のサポート
  3. 03JVM を使わない Rust ネイティブエンジン
  4. 04Delta Lake と Apache Iceberg のサポート
  5. 05Apache Arrow ベースのカラムナー実行

活用シーン

  1. 01コードを書き換えずに PySpark ジョブを Sail へ移行する
  2. 02Kubernetes のクラスターモードで分散処理を実行する
  3. 03Python UDF を用いた分析を実行する

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Sail

Build Status Codecov PyPI Release Static Slack Badge

Sail は Rust で記述されたApache Spark のドロップイン代替製品であり、分散型のマルチモーダルコンピューティングエンジン上で、バッチ処理、ストリーム処理、計算負荷の高い AI ワークロードを統合します。

  • Spark Connect プロトコルと互換性があり、コードを書き換えることなく Spark SQL および DataFrame API を利用できます。
  • 100% Rust ネイティブで JVM のオーバーヘッドがなく、メモリ安全性、即時起動、予測可能なパフォーマンスを実現します。
  • Spark より約10倍高速で、インフラコストを98%削減します。**TPC-H ベンチマークから導出した結果**をご覧ください。
  • ClickBench で実績があり、Spark、人気の Spark アクセラレーター、Databricks、Snowflake を上回る性能を発揮します。

ドキュメント

最新バージョンの Sail のドキュメントはこちらでご覧いただけます。

インストール

クイックスタート

Sail は PyPI から Python パッケージとして入手できます。Python 環境に PySpark と一緒にインストールできます。

pip install pysail
pip install "pyspark-client"
高度なユースケース

特定のハードウェアアーキテクチャ向けにパフォーマンスを最適化するには、ソースから Sail をインストールできます。詳細なインストールガイドでは、この手順を順を追って説明しています。

本番環境に Sail をデプロイする必要がある場合は、デプロイガイドで、Kubernetes クラスターやその他のインフラ構成に Sail をデプロイする手順を詳しく説明しています。

はじめに

Sail サーバーの起動

オプション1:コマンドラインインターフェース。 sail コマンドを使用して、ローカルの Sail サーバーを起動できます。

sail spark server --port 50051

オプション2:Python API。 Python API を使用して、ローカルの Sail サーバーを起動できます。

from pysail.spark import SparkConnectServer

server = SparkConnectServer(port=50051)
server.start(background=False)

オプション3:Kubernetes。 Sail を Kubernetes にデプロイし、クラスター モードで実行して分散処理を行えます。 Docker イメージのビルドと Kubernetes マニフェスト YAML ファイルの作成手順については、Kubernetes デプロイガイドをご覧ください。

kubectl apply -f sail.yaml
kubectl -n sail port-forward service/sail-spark-server 50051:50051
Sail サーバーへの接続

Sail サーバーが起動したら、PySpark から接続できます。 PySpark のコードを変更する必要はありません!

from pyspark.sql import SparkSession

spark = SparkSession.builder.remote("sc://localhost:50051").getOrCreate()
spark.sql("SELECT 1 + 1").show()

詳しくは、はじめにガイドをご覧ください。

Spark との互換性

Sail は Spark 3.5.x、Spark 4.x およびそれ以降のバージョンとの互換性を備えるよう設計されています。Spark クライアントのセッションを Spark Connect プロトコル経由で Sail に接続すれば、既存の PySpark コードをそのまま使用できます。

まずは、Sail に同梱されている実験的なPySpark 関数互換性チェック用スクリプトを利用できます。このスクリプトはコードベース内の PySpark 関数をスキャンし、Sail でのサポート状況を報告します。

python -m pysail.examples.spark.compatibility_check <directory>

実験的 このスクリプトは、あくまで最初の大まかな確認にのみ使用してください。スクリプトが確認するのは、参照されている PySpark 関数が Sail に_実装されている_かどうかです。動作が同等かどうかは検証しません。DataFrame 操作で使用されている関数を探しますが、Spark SQL の文字列は対象外です。

推奨される移行方法については、移行ガイドをご覧ください。

主な機能

レイクハウス形式とカタログプロバイダー

Sail は、Delta Lake および Apache Iceberg のテーブル形式をネイティブにサポートしています。 Apache Iceberg REST Catalog、AWS Glue、Unity Catalog、Hive Metastore、Microsoft OneLake などのカタログプロバイダーと連携します。

使用方法とベストプラクティスの詳細については、データソースガイド と カタログガイド をご覧ください。

ストレージ

Sail は、データの読み取りと書き込みに、次のようなさまざまなストレージバックエンドをサポートしています。

  • AWS S3
  • Azure
  • Hugging Face
  • Cloudflare R2
  • Google Cloud Storage
  • HDFS
  • ファイルシステム
  • HTTP/HTTPS
  • インメモリストレージ

詳細については、ストレージガイド をご覧ください。

Sail を選ぶ理由

15 年以上にわたり、Spark は分散データ処理の標準エンジンとして、ほぼすべての業界で ETL、機械学習、分析のパイプラインを支えてきました。

しかし、Spark を可能にした JVM の基盤が、今ではその足かせになっています。Sail は、JVM に伴う負荷のない、使い慣れた高性能な代替手段として構築されています。

Sail は Spark と互換性があります

Sail は、Spark SQL と Spark DataFrame API のドロップイン代替を提供します。Spark クライアントセッションを Spark Connect プロトコル経由で Sail に接続すれば、既存の PySpark コードをそのまま使用できます。

  • Spark SQL 方言のサポート。 カスタム Rust パーサー(パーサーコンビネーターと Rust の手続き型マクロで構築)により、Spark SQL 構文を本番環境に適した精度で幅広くカバーします。
  • DataFrame API のサポート。 Spark DataFrame の操作を、同一のセマンティクスで Sail 上で実行できます。
  • Python UDF、UDAF、UDWF、UDTF のサポート。 Python、Pandas、Arrow の UDF は、すべて Spark と同じ規約に従います。
Spark に対する Sail の優位性
  • Rust ネイティブエンジン。 ガベージコレクションによる一時停止や JVM のメモリ調整が不要で、メモリ使用量も少なく抑えられます。
  • カラムナー形式とベクトル化実行。 Apache Arrow と Apache DataFusion を基盤とし、カラムナーのインメモリ形式と SIMD 命令により、非常に高速なクエリ実行を実現します。
  • 超高速な Python UDF。 Arrow 配列ポインターによるゼロコピーのデータ共有により、シリアライズのオーバーヘッドなしで Sail 内で Python コードを実行します。
  • 高性能なデータシャッフル。 ワーカーが Arrow のカラムナーデータを直接交換することで、結合や集計にかかるシャッフルコストを最小限に抑えます。
  • 軽量でステートレスなワーカー。 ワーカーは数秒で起動し、アイドル時のメモリ消費は数メガバイトにとどまります。また、柔軟にスケールすることでクラウドコストを削減し、運用を簡素化します。
  • 信頼できる並行性とメモリ安全性。 Rust の所有権モデルにより、ヌルポインター、競合状態、安全でないメモリアクセスを防ぎ、比類のない信頼性を実現します。

既存のワークロードを移行する準備はできていますか?移行ガイド で手順をご確認ください。

ベンチマーク結果

派生 TPC-H の結果では、すべてのクエリで Sail が Apache Spark を上回っています。

  • 実行時間:多様な SQL ワークロードで約 10 倍高速です。
  • ハードウェアコスト:ピークメモリ使用量を大幅に抑え、シャッフルスピルもゼロにすることで、98%低減します。
指標SparkSail
クエリ合計時間534.78 s52.81 s
クエリ高速化率基準176% – 2819%
ピークメモリ使用量72 GB26 GB
ディスク書き込み(シャッフルスピル)115 GB0 GB

これらの結果は、AWS r8g.4xlarge インスタンスで実施した派生 TPC-H ベンチマーク(22 クエリ、スケールファクター 100、Parquet 形式)によるものです。

クエリ実行時間の比較

詳細な分析とグラフは、ベンチマーク結果のページをご覧ください。

さらに詳しく

  • アーキテクチャ – ローカルモードとクラスター モードの両方に対応する Sail の設計と、両モード間をシームレスに切り替える仕組みの概要です。
  • クエリプランニング – Sail が SQL と Spark のリレーションを解析し、論理プランと物理プランを構築する方法、およびローカルモードとクラスター モードでの実行処理について詳しく説明します。
  • SQL と DataFrame の機能 – Spark SQL および DataFrame API の互換性に関する完全なリファレンスです。
  • LakeSail ブログ – Sail のリリース、ベンチマーク、技術的な知見に関する最新情報です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。