- スター
- 3,488
- フォーク
- 240
- 未解決の Issue
- 294
- 最終コミット
- 7 時間前
これは何?
SailはApache Sparkの代替となる分散コンピュートエンジンです。クライアントはSpark Connectプロトコルで接続するため、既存のPySpark DataFrameやSpark SQLのコードを変更せずにSail上で実行できます。すべてRustで実装されており、JVMに依存しません。
SailはApache ArrowとApache DataFusionを基盤とし、インメモリのカラムナ形式とベクトル化実行を採用しています。バッチ処理、ストリーム処理に加え、Python UDF、UDAF、UDWF、UDTFのワークロードに対応します。sailコマンドまたはpysail Pythonパッケージから起動するローカルサーバーとして、あるいはKubernetes上のクラスターモードで実行できます。
データアクセスでは、Delta LakeとApache Icebergテーブルをネイティブにサポートし、Iceberg REST、AWS Glue、Unity Catalog、Hive Metastoreなどのカタログと連携します。S3、Azure、Google Cloud Storage、HDFS、Cloudflare R2、HTTP、ローカルファイルシステムからデータを読み書きできます。また、Sailがまだ実装していないPySpark関数を見つけるための実験的な補助ツールとして、互換性チェック用スクリプトが付属しています。
主な機能
- 01Spark Connectプロトコルに対応しており、PySparkクライアントはコードを変更せずに接続できます。
- 02Spark SQLとSpark DataFrame APIに対応し、Python UDF、UDAF、UDWF、UDTFも利用できます。
- 03Delta LakeとApache Icebergテーブルの読み書きをネイティブにサポートします。
- 04Iceberg REST、AWS Glue、Unity Catalog、Hive Metastoreの各カタログと連携します。
- 05Apache ArrowとDataFusionを基盤としており、JVMなしで動作します。
- 06ローカルサーバーとしても、Kubernetes上のクラスターとしてもデプロイできます。
ユースケース
- 既存のPySpark ETLジョブをコードを書き換えずに、より軽量なエンジンへ移行する。
- S3やAzureに保存されたDelta LakeまたはIcebergテーブルに対して、バッチ分析を実行する。
- Kubernetes上でSpark形式のワークロードを実行し、クラスターのコストと起動時間を削減する。
- 単一のコマンドで起動するサーバーを使い、Sparkコードをローカルで開発・テストする。
クイックスタート
- 1
PyPIからSailをインストールする
pip install pysail - 2
PySparkクライアントをインストールする
pip install "pyspark-client" - 3
ローカルのSailサーバーを起動する
sail spark server --port 50051 - 4
PySparkをsc://localhost:50051のサーバーに接続し、コードを変更せずに実行する
使う前に知っておきたいこと
- PySpark互換性チェック用スクリプトは実験的なもので、Sparkとの動作上の互換性は検証しません。
- Kubernetesで本番環境にデプロイするには、Dockerイメージをビルドしてマニフェストを作成する必要があります。
収録されている特集
トピック
よくある質問
- sail とは?
- 既存のPySparkコードをSpark Connectプロトコル経由で実行できる、Rust製のApache Spark互換エンジン。 SailはApache Sparkの代替となる分散コンピュートエンジンです。クライアントはSpark Connectプロトコルで接続するため、既存のPySpark DataFrameやSpark SQLのコードを変更せずにSail上で実行できます。すべてRustで実装されており、JVMに依存しません。
- sail は無料で使えますか?ライセンスは?
- sail は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- sail は今もメンテナンスされていますか?
- 活発にメンテナンス中。sail の最終コミットは 2026年11月7日 です。
- sail は何に使えますか?
- 既存のPySpark ETLジョブをコードを書き換えずに、より軽量なエンジンへ移行する。 S3やAzureに保存されたDelta LakeまたはIcebergテーブルに対して、バッチ分析を実行する。 Kubernetes上でSpark形式のワークロードを実行し、クラスターのコストと起動時間を削減する。 単一のコマンドで起動するサーバーを使い、Sparkコードをローカルで開発・テストする。
- sail のインストール方法は?
- PyPIからSailをインストールする: pip install pysail PySparkクライアントをインストールする: pip install "pyspark-client" ローカルのSailサーバーを起動する: sail spark server --port 50051 PySparkをsc://localhost:50051のサーバーに接続し、コードを変更せずに実行する
- sail はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/lakehq/sail
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
データエンジニアリングを学ぶ人向けに、書籍、コミュニティ、講座、ツール、ブログなどの学習リソースを集めたリンク中心のハンドブック。
Scala、Java、Python、RのAPIを備えた、大規模データ処理向けの統合分析エンジン。
AWS GlueでETLジョブやデータ統合パイプラインを構築するためのコードサンプル、チュートリアル、ユーティリティ。
pandasなどのデータツールと連携できる、Delta Lakeテーブルの読み書き用ネイティブRustライブラリ
Spark開発を効率化する、DataFrameの検証、列変換、スキーマ操作向けのPySparkヘルパー関数ライブラリ。