BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MicrosoftがApache Spark向けの高性能C#およびF#サポートをリリース

MicrosoftがApache Spark向けの高性能C#およびF#サポートをリリース

原文(投稿日:2019/04/30)へのリンク

Microsoftは、Apache Spark用の.NETのリリースを発表し、ビッグデータ計算エンジンに新しい高性能のC#とF#のバインディングを追加した。

最近のSpark + AIサミットで、MicrosoftはApache Spark用の.NETのプレビューリリースを発表した。Apache SparkはScalaで書かれているので、その言語に対して常にネイティブサポートされる。Java向けのAPIバインディング、および人気のデータサイエンス言語であるPythonおよびRも長い間使用されてきた。C#およびF#向けの新しい言語バインディングは、新しいSpark相互運用層に書かれている。TPC-Hベンチマークでのテストでは、.NETのパフォーマンスは他の言語に匹敵し、場合によっては「Pythonの2倍の速さ」であった。

開発者は既存の.NET Standard互換のコードおよびライブラリを再利用でき、「Spark SQL、DataFrame、Streaming、MLLibを含むApache Sparkのあらゆる側面にアクセスできる」。クラウド開発者は、Azure HDInsightAzure Databricksを使用してMicrosoftのAzureに、またはAmazon EMR SparkAWS Databricksを使用してAmazon Web ServicesにApache Spark向けに.NETをデプロイできる。

Sparkで.NETアプリケーションを実行するには、Microsoft.Spark.Worker binariesバイナリ、JDKおよび標準のApache Sparkバイナリのインストールが必要である。アプリを開発するには、Microsoft.Spark nugetパッケージをインストールする必要がある。Microsoftの開発者は、C#言語拡張機能と汎用相互運用層をSpark自体に含めるようにSparkプロジェクト改善提案(SPIP)を提出した。しかし、Apache SparkのコミッターであるSean Owenは、この作業がSparkにマージされることは「highly unlikely(全くありそうにない)」とコメントした。

Hacker Newsのコメンターは、Apache Spark向けの.NETと、2016年以来Apache Spark上でC#サポートを提供してきたプリカーソルプロジェクトMobiusとを比較し、いくつかの改善された点を説明した。まず、Mobiusは.NETフレームワークの古いオープンソースバージョンであるMonoを使用して書かれているが、.NET for Apache Sparkは.NET Coreを使用している。これによりクロスプラットフォームサポートとパフォーマンスが向上する。さらに、MobiusはSparkのバージョン2.0までしかサポートしていない。Sparkの最新バージョンは2.4までである。最後に、.NET for Apache SparkはMobiusから得られた多くの教訓とユーザからのフィードバックを取り入れている。

あるコメンターは、新しい.NETライブラリは他の言語と同等またはそれ以上のパフォーマンスを発揮する一方で、次のように指摘している。

「性能だけの問題ではありません。問題をデバッグする機能もあります。そのためには、まだScalaにあるApacheコアを掘り下げる必要があります。」

.NET for Apache Sparkロードマップには、Apache Spark 3.0のサポート、.NET Core 3.0のベクトル化のサポート、およびVS Codeのサポートなど、既に進行中のプロジェクトに対するいくつかの改善点がリストされている。Apache Spark向けの.NETソースコードはGithubから入手できる。

この記事に星をつける

おすすめ度
スタイル

BT