分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark
今天早上六點半左右微信群里就看到張隊發的關于.NET Spark大數據的鏈接https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/ ,正印證了“微軟在不斷通過.NET Core補齊各領域開發,真正實現一種語言的跨平臺”這句話。那么我們今天就來看看這個 .NET for Apache Spark到底是個什么鬼?
作者:依樂祝
原文鏈接:https://www.cnblogs.com/yilezhu/p/10767910.html
什么是.NET for Apache Spark?
我們都知道Spark是一種流行的開源分布式處理引擎,適用于大型數據集(通常是TB級別)的分析。Spark可用于處理批量數據,實時流,機器學習和即時查詢。處理任務分布在一個節點集群上,數據被緩存在內存中,以減少計算時間。到目前為止,Spark已經可以通過Scala,Java,Python和R訪問,卻不能通過.NET進行訪問。
而.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開發人員已經擁有的所有知識、技能、代碼和庫。
C#/F#語言綁定到Spark將被寫入一個新的Spark交互層,這提供了更容易的擴展性。這一新的Spark交互層的編寫考慮了語言擴展的最佳實踐,并針對交互和性能進行了優化。長期來看,這種擴展性可以用于在Spark中添加對其他語言的支持。
.NET for Apache Spark符合.NET Standard 2.0標準,可以在Linux、MacOS和Windows上使用。
官網地址:https://dotnet.microsoft.com/apps/data/spark
快速開始.NET for Apache Spark
在本節中,我們將展示如何在Windows上使用.NET Core運行.NET for Apache SPark應用程序。
在開始使用.NET for Apache Spark之前,確實需要安裝一些東西,如:.NET Core 2.1 SDK | Visual Studio 2019 | Java 1.8 | Apache Spark 2.4.x。具體步驟可以參考這些步驟開始.net for Apache SPark。
一旦安裝完畢,您就可以用三個簡單的步驟開始在.NET中編寫Spark應用程序。
在我們的第一個.NET Spark應用程序中,我們將編寫一個基本的Spark pipeline,它將統計文本段中每個單詞的出現次數。
// 1. Create a Spark sessionvar 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開發
.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生態系統
.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的下一步計劃
今天是我們旅程的第一步。以下是我們近期路線圖的一些特點。
簡化入門經驗、文檔和示例
原生集成到開發人員工具中,如VisualStudio、VisualStudio Code、木星筆記本
.net對用戶定義的聚合函數的支持
NET的C#和F#的慣用API(例如,使用LINQ編寫查詢)
用Azure數據庫、Kubernetes等提供的開箱即用的支持。
使.NET for Apache Spark成為Spark Core的一部分。
總結
.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/
總結
以上是生活随笔為你收集整理的分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Asp.Net Core中集成Kafk
- 下一篇: 持续畅销20年的《C#高级编程》出第11