微軟發佈 .NET for Apache Spark 性能碾壓Python、Scala和Java

自從微軟收購了GitHub後,越來越擁抱開源了。在今年的 Spark + AI 峰會上,微軟宣佈 .NET for Apache Spark,並推出了首個預覽版本 v0.1.0,這是一個用於 Spark 大數據的 .NET 框架,可以讓 .NET 開發者輕鬆地使用 Apache Spark。近期在.net Foundation GitHub看到開源了.NET for Apache Spark。





從更新記錄上看到還在不斷的更新內容。

.NET for Apache®Spark™

.NET for Apache Spark 提供高性能的 .NET API 以便輕鬆的在 C# 和 F# 程序中使用 Apache Spark 。你可以訪問最受歡迎的 Dataframe 和 SparkSQL ,可以處理結構化數據和 Spark Structured Streaming 流數據。



.NET for Apache Spark符合.NET標準 - .NET API的正式規範,在.NET實現中很常見。這意味著您可以在編寫.NET代碼的任何地方使用.NET for Apache Spark,從而允許您重用作為.NET開發人員已有的所有知識,技能,代碼和庫。

.NET for Apache®Spark 架構



.NET for Apache Spark 兼容 .NET 標準,支持 Windows, Linux 和 macOS ,使用 .NET Core,或者是 Windows 下使用 .NET Framework。同時也可以運行在主流的雲平臺上,包括:Azure HDInsight Spark, Amazon EMR Spark, AWS & Azure Databricks.

.NET for Apache®Spark 性能

一項新技術的誕生作為技術人員首先考慮到的是有哪些方面比較突出或者吸引眼球的地方,那麼大家可以看一下.net for apache spark 的性能表現:



上圖顯示了針對Apache Spark與Python和Scala的.NET的每個查詢性能。.NET for Apache Spark在Python和Scala上運行良好。此外,在UDF性能至關重要的情況下,例如查詢1,其中在JVM和CLR .NET之間傳遞3B行非字符串數據,Apache Spark比Python快2倍。

同樣重要的是要說這是我們為Apache Spark首次推出的.NET,我們的目標是進一步投資改進和基準性能(例如Arrow優化)。您可以按照我們的說明在我們的GitHub倉庫上對此進行基準測試。

可以說是完全碾壓毫無壓力!

.NET for Apache®Spark 下一步展望

.NET for Apache Spark是將.NET打造成構建大數據應用程序的重要技術堆棧的第一步。近期規劃路線

簡化入門體驗,文檔和示例與Visual Studio,Visual Studio Code,Jupyter筆記本等開發人員工具進行本機集成.NET支持用戶定義的聚合函數用於C#和F#的.NET慣用API(例如,使用LINQ編寫查詢)開發即用支持Azure Databricks,Kubernetes等。為Spark Spark創建.NET for Spark Spark。您可以在此處關注此進度。

.NET for Apache®Spark 入門

準備條件:有關詳細說明,您可以在Windows上看到從源代碼構建針對Apache Spark的.NET。從.NET為Apache Spark GitHub Releases頁面選擇Microsoft.Spark.Worker版本並下載到本地計算機(例如c:\bin\Microsoft.Spark.Worker\)。重要信息創建新的環境變量 DotnetWorkerPath並將其設置為下載並解壓縮Microsoft.Spark.Worker的目錄(例如,c:\bin\Microsoft.Spark.Worker)。下載並安裝以下內容:.NET Core 2.1 SDK | Visual Studio 2019 | Java 1.8 | Apache Spark 2.4.1下載並安裝Microsoft.Spark.Worker版本:為Apache Spark應用程序編寫.NET:打開Visual Studio - >創建新項目 - >控制檯應用程序(.NET Core) - >名稱: HelloSparkMicrosoft.Spark從spark nuget.org feed中將Nuget包安裝到解決方案中- 請參閱安裝Nuget Package的方法將以下代碼寫入Program.cs:

var spark = SparkSession。Builder()。GetOrCreate();
var df = spark。閱讀()。Json(“ people.json ”);
df。顯示();
構建解決方案運行.NET for Apache Spark App:打開終端並導航到您的app文件夾:

cd <your-app-output-directory>
/<your-app-output-directory>people.json使用以下內容創建:

{ “ name ”:“ Michael ” }
{ “ name ”:“ Andy ”,“年齡”:30 }
{ “ name ”:“賈斯汀”,“年齡”:19 }
運行你的應用程序

spark-submit `
--class org.apache.spark.deploy.DotnetRunner `
--master local `
microsoft-spark-2.4.x-<version>.jar `
HelloSpark
/<version>

請注意,此命令假定您已下載Apache Spark並將其添加到PATH環境變量中。

開源地址:https://github.com/dotnet/spark