.NET for Apache Spark 首個預覽版
今天在Spark + AI峰會上, 我們很高興地宣佈 .NET for Apache Spark 。 Spark是一種流行的開源分散式處理引擎,適用於大型資料集的分析。Spark可用於處理批量資料,實時流,機器學習和即席查詢。
.NET for Apache Spark旨在使.NET開發人員可以跨所有Spark API訪問Apache®Spark™。到目前為止,Spark已經可以通過Scala,Java,Python和R訪問,但不能訪問.NET。
我們計劃在開放時(作為.NET Foundation成員專案)與Spark和.NET社群一起為Apache Spark開發.NET,以確保開發人員充分利用這兩個領域。
https://github.com/dotnet/spark
Star
本文的其餘部分提供了有關以下主題的更多細節:
- 什麼是.NET for Apache Spark?
- .NET for Apache Spark入門
- .NET for Apache Spark效能
- .NET for Apache Spark的下一步是什麼
- 包起來
什麼是.NET for Apache Spark?
。用於Apache Spark的.NET提供了高效能API,用於使用C#和F#中的Spark。使用此.NET API,您可以訪問Apache Spark的所有方面,包括Spark SQL,DataFrames,Streaming,MLLib等。用於Apache Spark的.NET允許您重用已有的所有知識,技能,程式碼和庫作為.NET開發商。
繫結到Spark的C#/ F#語言將寫在一個新的Spark互操作層上,它提供了更容易的擴充套件性。編寫了這個新的Spark interop層,記住了語言擴充套件的最佳實踐,並優化了互操作性和效能。從長遠來看,這種可擴充套件性可用於在Spark中新增對其他語言的支援。
.NET for Apache Spark符合.NET Standard 2.0,可以在Linux,macOS和Windows上使用,就像.NET的其餘部分一樣。.NET for Apache Spark在Azure HDInsight中預設可用,並且可以安裝在Azure Databricks等中。
.NET for Apache Spark入門
在開始使用.NET for Apache Spark之前,您需要安裝一些東西。按照以下步驟開始使用.NET for Apache Spark
設定完成後,您可以通過三個簡單步驟開始在.NET中編寫Spark應用程式。
在我們的第一個.NET Spark應用程式中,我們將編寫一個基本的Spark管道,用於計算文字段中每個單詞的出現次數。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 1. Create a Spark session var spark = SparkSession .Builder() .AppName("word_count_sample") .GetOrCreate(); // 2. Create a DataFrame DataFrame dataFrame = spark.Read().Text("input.txt"); // 3. Manipulate and view data var words = dataFrame.Select(Split(dataFrame["value"], " ").Alias("words")); words.Select(Explode(words["words"]) .Alias("word")) .GroupBy("word") .Count() .Show(); |
.NET for Apache Spark效能
我們很高興地說,Apache Spark的第一個預覽版本在流行的TPC-H基準測試中表現良好。TPC-H基準包含一套面向業務的查詢。下圖說明了在TPC-H查詢集上.NET Core與Python和Scala的效能。
上圖顯示了針對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的下一步是什麼
今天標誌著我們旅程的第一步。以下是我們近期路線圖的一些功能。請遵循我們的GitHub倉庫的完整路線圖。
- 簡化入門體驗,文件和示例
- 與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是我們將.NET打造成構建大資料應用程式的重要技術堆疊的第一步。
我們需要您的幫助來塑造Apache Spark的未來,我們期待看到您使用.NET為Apache Spark構建的內容。您可以通過我們的GitHub倉庫向我們提供聯絡。