Skip to content

MS_DotNetForApacheSpark

nishi_74322014 edited this page Sep 11, 2026 · 2 revisions

.NET for Apache Spark

概要

  • .NET の経験あるいはコード ベースを持つ開発者が、
    ビッグ データ分析の世界へ参入できるように支援する。

    • C# や F# のような使い慣れた言語を使いたい
    • 言語統合クエリ(LINQ)のような機能のサポート
    • リモート Spark クラスタへのアプリの送信や .NET アプリのデバッグ
  • Microsoft と .NET Foundation が開発

    • 2019/4 に最初のバージョンが公開
    • 2020/10/27 に 1.0 がリリース
      • .NET Standard 2.0 以降をターゲット
        (.NET Core 3.1 以降を推奨)
      • GitHub ページや NuGet から入手可能
      • 以下の機能をサポートしている。
  • Apache Spark クラウドサービス等で利用可能

  • 今後の見通し

    • 前提条件や依存関係の設定

    • 質の高いドキュメント

    • コミュニティが提供する

      • すぐに実行できる Docker イメージ
      • .NET for Apache Spark のドキュメントの更新
    • デプロイメントオプション

      • CI/CD デップスパイプラインとの統合
      • Visual Studio から直接ジョブを発行

補足(最新化 / 重要): .NET for Apache Spark は 2024 年 12 月に
サポート終了
となり、開発は終了している
dotnet/spark リポジトリはアーカイブ扱い)。
Microsoft Learn のドキュメントも「以前のバージョン」に移動している。

「.NET 開発者がビッグデータの世界に入れるように」という狙いは魅力的だったが、

  • Spark エコシステムの中心が Python(PySpark)と SQL で動いており、
  • JVM と .NET CLR の橋渡しに伴うオーバーヘッドと制約があり、
  • クラウド側(Databricks、Synapse、Fabric)が
    Python / SQL を前提に機能を拡充していった、

という事情から普及しきらなかったものと解される。

現在 .NET から Spark 相当の処理を行いたい場合の選択肢:

目的 現在の選択
大規模データの分散処理 PySpark / Spark SQL(Databricks / Fabric)
.NET でのデータ処理・分析 Microsoft.Data.Analysis(DataFrame ライブラリ)
.NET での機械学習 ML.NET(継続提供中)
.NET から分散処理を呼ぶ ジョブとして Data Factory から起動する

以下は当時の記録として読まれたい。

詳細

経緯

  • Apache Spark 用のバインディングである PySpark(Python)や SparkR(R)と、
    同じ方式で実装された、Mobius と言う C# と F# の言語バインディングを起点に開発された。

  • Apache Arrow や Pyrolite によって JVM と .NET CLR の間の相互運用性を高めている。

    • Apache Arrow は、言語に依存しないカラム状のメモリフォーマットを定義
    • Pyrolite は、Java や .NET と Python を接続するのに良い選択

補足(なぜ Arrow が効くのか): Spark 本体は JVM 上で動くため、
.NET から使うにはプロセス間でデータをやり取りする必要がある。
素朴に実装すると 1 行ごとにシリアライズが発生し、極端に遅くなる。

Apache Arrow は「言語に依存しない列指向のメモリ形式」であり、
変換なしにメモリをそのまま共有できる(ゼロコピー)。
PySpark も同じ仕組みで高速化しており、
.NET for Apache Spark はその方式を踏襲したものである。

機能

ユーザー定義関数(UDF)作成

API 拡張フレームワーク

使用方法

参考

github.com

microsoft.com

.NET Blog

.NET > .NET for Apache Spark

Microsoft Learn > .NET for Apache Spark ガイド

開発基盤部会 Wiki & Blog

  • 分散(バッチ)系(分散処理の該当節を参照)
  • ストリーム系(分散処理の該当節を参照)
  • データ収集・格納系(分散処理の該当節を参照)

プロダクト

Blog


Tags: 移行, クラウド, Azure, .NET開発, .NET Core, .NET Standard

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally