-
Notifications
You must be signed in to change notification settings - Fork 0
MS_DotNetForApacheSpark
-
.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 から入手可能
- 以下の機能をサポートしている。
- .NET Standard 2.0 以降をターゲット
-
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 はその方式を踏襲したものである。
-
Spark SQL や DataFrame APIを使用した、
分散データ操作に、ユーザが定義した関数を使用できる。 -
参考
- Linux Foundation Delta Lake
- Microsoft OSS Hyperspace
- Spark MLlib、ML.NET
-
NuGet Gallery | Microsoft.Spark
https://www.nuget.org/packages/Microsoft.Spark/ -
.NET for Apache Spark
https://dotnetfoundation.org/projects/dotnet-spark -
.NET for Apache Spark - Databricks
https://databricks.com/jp/session_eu19/net-for-apache-spark -
Microsoft が Apache Spark 向けの高性能 C# および F# サポートをリリース
https://www.infoq.com/jp/news/2019/06/microsoft-net-apache-spark/ -
データ解析フレームワーク .NET for Apache Spark 1.0 リリース - Microsoft | マイナビニュース
https://news.mynavi.jp/article/20201027-1439818/
-
dotnet/spark:
.NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers.
https://github.com/dotnet/spark
-
Spark Archives
https://devblogs.microsoft.com/dotnet/tag/spark/- Introducing .NET for Apache® Spark™ Preview
https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/ - Big Plans for Big Data and .NET for Spark
https://devblogs.microsoft.com/dotnet/big-plans-for-big-data-and-net-for-spark/
- Introducing .NET for Apache® Spark™ Preview
-
.NET for Apache Spark™ | Big data analytics
https://dotnet.microsoft.com/apps/data/spark- Get started in 10 minutes > .NET for Apache Spark Tutorial(.NET for Apache Sparkチュートリアル)
- Channel 9 > .NET for Apache Spark 101(.NET for Apache Sparkチュートリアル)
- ML.NET | Machine Learning made for .NET
-
.NET for Apache Spark のドキュメント
https://learn.microsoft.com/ja-jp/previous-versions/dotnet/spark/ -
概要
-
使い方ガイド
-
データへの接続(.NET for Apache Sparkのデータ接続)
-
アプリケーションをビルドする
- Ubuntu
- Windows
-
リモート ジョブを送信する
- Azure Synapse Analytics にジョブを送信する
- HDInsight にジョブを送信する
- Databricks にジョブを送信する
-
ユーザー定義関数 (UDF)
- UDF ガイド
- .NET での Java UDF
- .NET Interactive での UDF
- ワーカーおよび UDF のバイナリを展開する
-
Jupyter Notebook の使用
-
配信ガイド
-
アプリケーションをデバッグする
-
Azure HDInsight に対話型ノートブックをインストールする
-
-
チュートリアル(.NET for Apache Sparkチュートリアル)
- .NET for Apache Spark で見えた、配管工おじさん入門への道
https://www.osscons.jp/joj7rztvv-537/
Tags: 移行, クラウド, Azure, .NET開発, .NET Core, .NET Standard
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。