今天早上六點半左右微信羣裏就看到張隊發的關於.NET Spark大數據的連接https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/ ,正印證了「微軟在不斷經過.NET Core補齊各領域開發,真正實現一種語言的跨平臺」這句話。那麼咱們今天就來看看這個 .NET for Apache Spark究竟是個什麼鬼?html
做者:依樂祝
原文連接:http://www.javashuo.com/article/p-cspwrivd-gy.htmlgit
咱們都知道Spark是一種流行的開源分佈式處理引擎,適用於大型數據集(一般是TB級別)的分析。Spark可用於處理批量數據,實時流,機器學習和即時查詢。處理任務分佈在一個節點集羣上,數據被緩存在內存中,以減小計算時間。到目前爲止,Spark已經能夠經過Scala,Java,Python和R訪問,卻不能經過.NET進行訪問。github
而.NET for Apache Spark就是旨在使.NET開發人員能夠跨全部Spark API訪問Apache®Spark™。數據庫
.NET for Apache Spark爲C#和F#提供了高性能的API來操做Spark。使用這個.NET API,您能夠訪問Apache Spark的全部功能,包括SparkSQL、DataFrames、流、MLLib等等。.NET for Apache Spark容許您重用做爲.NET開發人員已經擁有的全部知識、技能、代碼和庫。apache
C#/F#語言綁定到Spark將被寫入一個新的Spark交互層,這提供了更容易的擴展性。這一新的Spark交互層的編寫考慮了語言擴展的最佳實踐,並針對交互和性能進行了優化。長期來看,這種擴展性能夠用於在Spark中添加對其餘語言的支持。c#
.NET for Apache Spark符合.NET Standard 2.0標準,能夠在Linux、MacOS和Windows上使用。緩存
官網地址:https://dotnet.microsoft.com/apps/data/spark微信
在本節中,咱們將展現如何在Windows上使用.NET Core運行.NET for Apache SPark應用程序。session
在開始使用.NET for Apache Spark以前,確實須要安裝一些東西,如: .NET Core 2.1 SDK | Visual Studio 2019 | Java 1.8 | Apache Spark 2.4.x。具體步驟能夠參考這些步驟開始.net for Apache SPark。app
一旦安裝完畢,您就能夠用三個簡單的步驟開始在.NET中編寫Spark應用程序。
在咱們的第一個.NET Spark應用程序中,咱們將編寫一個基本的Spark pipeline,它將統計文本段中每一個單詞的出現次數。
// 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 爲您提供了使用 C# 和F# 來操做Apache Spark的APIs。使用這些.NET API,您能夠訪問Apache Spark的全部功能,包括Spark SQL,用於處理結構化數據和Spark流。
初版的.NET for Apache Spark在流行的TPC-H基準性能測試中的表現就很優異。TPC-H基準性能測試由一組面向業務的查詢組成。下圖展現了.NET Core與Python和Scala在TPC-H查詢集上的性能比較。
上面的圖表顯示了相對於Python和Scala,.NET對於Apache Spark的每一個查詢性能對比。NET for Apache Spark在Python和Scala上表現良好。此外,在UDF性能相當重要的狀況下,好比查詢1,JVM和CLR.NET之間傳遞3B行非字符串數據的速度比Python快2倍。
一樣重要的是,這是.NET for Apache Spark的第一個預覽版,咱們的目標是進一步投資於改進和基準測試性能(例如,Arrow優化)。您能夠按照咱們的指示在咱們的GitHub倉儲上對此進行基準測試。
.NET For Apache Spark容許您重用做爲.NET開發人員已經擁有的全部知識、技能、代碼和庫。
您的數據處理代碼還能夠利用.NET開發人員可使用的大型庫生態系統,如Newtonsoft.Json,ML.NET、MathNet.NDigics、NodaTime等。
.NET for Apache Spark能夠在Linux、MacOS和Windows上使用,就像.NET的其餘部分同樣。
.NET for Apache Spark在Azure HDInsight中默承認用,能夠安裝在Azure Databricks、Azure Kubernetes服務、AWS數據庫、AWS EMR等中。
.NET for Apache Spark是一個擁有來自3,700多家企業的60,000多名代碼貢獻者的強大開源社區的一部分。
.NET是免費的,其中包括用於 .NET for Apache Spark。沒有任何費用或許可證費用,包括用於商業用途的費用。
今天是咱們旅程的第一步。如下是咱們近期路線圖的一些特色。
.NET for Apache Spark是微軟使.NET成爲構建大數據應用程序的偉大技術棧的第一步。
想了解更多信息的能夠訪問.NET for Apache Spark的github倉儲:https://github.com/dotnet/spark 。
最後,感謝您的閱讀。
本文內容,部分參考自:https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/