ライブラリ / SDK
apache/datafusion-ballista avatar
apache/datafusion-ballista

Ballista:SessionContext::standalone()分散化

Apache DataFusion Ballista 分散クエリ エンジン。 Ballista は、最小限のコード変更で同じ SQL および DataFrame ワークロードをクラスター全体で実行し、同じ結果をもたらします。

スター 2,135フォーク 320RustApache-2.0

ひと目でわかる

これは何?
DataFusion拡張Rust分散エンジン。scheduler:50050 Web TUI、Cargo feature、54.1.0、DataFusionギャップを整理。
誰に向いている?
DataFusion→Ballista移行Rustチーム向け。54.1.0+examples/README.md+SessionContext::standalone()+localhost:50050 TUI確認。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 2 日前です。
何の言語で書かれている?
主に Rust です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

SessionContext::standalone()差し替え

Ballista は Apache DataFusion を拡張する分散クエリ実行エンジンで、ワークロードを複数ノードで並列実行します。README のコード例では、単一ノード DataFusion アプリを分散版へ変える際、SessionContext::new() を SessionContext::standalone().await? に置き換え、ballista::prelude::* を import するだけで register_csv、sql、show はそのまま残ります。サンプルは tests/data/example.csv を register_csv し、SELECT a, MIN(b) FROM example WHERE a <= b GROUP BY a LIMIT 100 を実行します。README の IMPORTANT 注記は DataFusion と Ballista の間に非互換ギャップがあり、コミュニティが解消に取り組んでいると明記しています。同一 SQL が単機 DataFusion と Ballista クラスタで同じ結果を返す保証は README 本文には書かれていません。リポジトリ言語 Rust、ライセンス Apache-2.0、公式 datafusion.apache.org/ballista です。GitHub ミラー github.com/apache/datafusion-ballista は読み取り専用で、公式 Git は gitbox 側と README が説明しています。

DataFusion/Spark/カスタム3ペルソナ

README は 3 ペルソナを列挙します。単一マシン上限を超えた DataFusion ユーザーは最小コード変更でクラスタ上の同一 SQL/DataFrame を実行できます。Spark SQL やバッチに慣れたユーザーは shuffle 境界ステージ分割、パーティション単位タスク、vcore 付き executor、AQE という Spark 風モデルを Rust ネイティブで使えます。カスタム分散エンジン開発者は scheduler、executor、計画シリアライゼーションを拡張可能部品として再利用できます。保証詳細は docs/source/contributors-guide/user-personas.md にあります。description フィールドも「同一 SQL/DataFrame を最小コード変更でクラスタ実行し同一結果」と述べますが、README IMPORTANT 注記の非互換ギャップと併読が必要です。README タイトルは Ballista: Making DataFusion Applications Distributed です。Who is Ballista for 見出しで 3 経路を区別しています。

scheduler/executorとCompose/K8s

Ballista クラスタは 1 つ以上の scheduler と 1 つ以上の executor で構成されます。ネイティブバイナリまたは Docker イメージとして起動でき、Docker Compose(datafusion.apache.org/ballista/user-guide/deployment/docker-compose.html) や Kubernetes(datafusion.apache.org/ballista/user-guide/deployment/kubernetes.html) でデプロイできます。README の図はクライアントから scheduler へのジョブ送信、executor から scheduler へのタスク取得とステータス報告を示します。詳細は docs/source/contributors-guide/architecture.md です。scheduler と executor は独立プロセスとしてスケールでき、README 自体に推奨ノード数やネットワーク帯域の数値は記載されていません。本番 HA 構成やフェイルオーバー手順も README 取得時点では未記載です。rest-api feature を有効にすると scheduler が REST API を公開すると README の Cargo 表に記載されています。

examples/README.md起動手順

README は最初に examples/README.md のスタンドアロンまたは分散サンプルを実行し、その後 ballista/client/README.md の Getting Started Guide を読む流れを推奨します。コード例では ballista::prelude::* と SessionContext::standalone() でバックグラウンドに Ballista インフラを起動し、CSV 登録から SQL 実行、結果展示まで DataFusion 単機版と同じ API を使います。Getting Started 詳細は ballista/client/README.md と User Guide(datafusion.apache.org/ballista) に委ねられています。README は examples ディレクトリにスタンドアロンと分散の両方のサンプルがあると述べ、最初の一歩として cargo run による例実行を推奨しています。tokio ランタイム上で async fn main として動作する点も README コード例に示されています。

Web TUIとHTTP:50050

Ballista はブラウザ Web TUI で稼働中クラスタを監視できます。ジョブ、executor、メトリクス、scheduler 情報をブラウザに表示します。scheduler HTTP エンドポイント有効時、http://localhost:50050 を開くとホスト Web TUI にリダイレクトされます。ローカル実行方法は datafusion.apache.org/ballista/user-guide/cli.html の Ballista CLI ドキュメントに記載されています。README は Web Terminal User Interface 見出しで従来 TUI 相当ビューをブラウザ提供と説明しています。ポート 50050 は README localhost 例にのみ現れ、本番 TLS 設定や認証方式は README 取得時点未記載です。CLI crate は TUI feature をデフォルト含むと README の Cargo 表に記載されています。

Cargo feature表とビルド

ballista クライアント crate はデフォルト standalone feature でプロセス内 scheduler/executor を起動します。ballista-core は arrow-ipc-optimizations(デフォルト有効)、spark-compat(datafusion-spark 経由手動有効)、build-binary(AWS S3 と CLI 解析)、force_hash_collisions(テスト専用)を提供します。ballista-scheduler は build-binary(デフォルト有効)、substrait、prometheus-metrics、graphviz-support、keda-scaler、rest-api を持ち build-binary 以外はデフォルト無効です。ballista-executor は mimalloc と arrow-ipc-optimizations をデフォルト有効。README 例: cargo build -p ballista でスタンドアロン、cargo build -p ballista-scheduler --features substrait で Substrait 対応 scheduler をビルドします。spark-compat 有効時は DataFusion Spark 互換モードが使えますが、README は互換範囲の詳細を本文に書いていません。keda-scaler feature は KEDA 連携スケーリング用と README 表に記載されています。

Spice AI/CoralogixとSQLギャップ

README Who uses Ballista には Spice AI と Coralogix の 2 組織のみ。Spice AI は Ballista 利用ブログ公開、Coralogix も採用例。他組織は PR でリスト追加可能。README は CTE、結合、サブクエリを含む幅広い SQL をサポートし大規模クエリ実行可能と述べますが、DataFusion とのギャップは README 取得時点でも残存し、詳細は DataFusion SQL Reference 参照が必要です。GitHub メタデータ(README 取得時): スター 2120、フォーク 314、未解決 issue 199、最新リリース 54.1.0、ライセンス Apache-2.0。54.0.0 と 53.0.0 も releases に存在。defaultBranch main、アーカイブなし。pushedAt 2026-08-09T23:06:23Z です。README は User Guide へのリンクを末尾に置き、詳細ドキュメントは datafusion.apache.org/ballista に委ねています。

54.1.0固定評価手順

Ballista 54.1.0 固定評価は examples/README.md 分散例を cargo run で実行し、SessionContext::standalone() 起動後 http://localhost:50050 で Web TUI のジョブ/executor 表示を確認する順です。substrait 評価なら cargo build -p ballista-scheduler --features substrait を追加し plan 受け渡しを記録。prometheus-metrics 評価なら --features prometheus-metrics を付与。graphviz-support 評価なら同 scheduler crate に --features graphviz-support を付与し実行グラフ出力を確認。README は最小ノード数や HW 要件未記載のため docker-compose または kubernetes ガイドのリソース記述と照合が必要。DataFusion 単機との結果差分は README IMPORTANT 注記のギャップ箇所ごとに SQL を固定して比較記録。Apache License 2.0 商用組み込みは LICENSE 条文確認が前提。評価ログにタグ 54.1.0 と cargo コマンド、Web TUI 表示確認結果、実行したクエリ文を残してください。本番前は docker-compose ガイドのリソース要件も必ず確認します。

編集部の結論

DataFusion→Ballista移行Rustチーム向け。54.1.0+examples/README.md+SessionContext::standalone()+localhost:50050 TUI確認。DataFusionギャップREADME IMPORTANT注記どおり差分記録。小規模単機向きでない。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート