分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark
今天早上六點(diǎn)半左右微信群里就看到張隊(duì)發(fā)的關(guān)于.NET Spark大數(shù)據(jù)的鏈接https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/ ,正印證了“微軟在不斷通過.NET Core補(bǔ)齊各領(lǐng)域開發(fā),真正實(shí)現(xiàn)一種語言的跨平臺”這句話。那么我們今天就來看看這個 .NET for Apache Spark到底是個什么鬼?
作者:依樂祝
原文鏈接:https://www.cnblogs.com/yilezhu/p/10767910.html
什么是.NET for Apache Spark?
我們都知道Spark是一種流行的開源分布式處理引擎,適用于大型數(shù)據(jù)集(通常是TB級別)的分析。Spark可用于處理批量數(shù)據(jù),實(shí)時流,機(jī)器學(xué)習(xí)和即時查詢。處理任務(wù)分布在一個節(jié)點(diǎn)集群上,數(shù)據(jù)被緩存在內(nèi)存中,以減少計(jì)算時間。到目前為止,Spark已經(jīng)可以通過Scala,Java,Python和R訪問,卻不能通過.NET進(jìn)行訪問。
而.NET for Apache Spark就是旨在使.NET開發(fā)人員可以跨所有Spark API訪問Apache?Spark?。
.NET for Apache Spark為C#和F#提供了高性能的API來操作Spark。使用這個.NET API,您可以訪問Apache Spark的所有功能,包括SparkSQL、DataFrames、流、MLLib等等。.NET for Apache Spark允許您重用作為.NET開發(fā)人員已經(jīng)擁有的所有知識、技能、代碼和庫。
C#/F#語言綁定到Spark將被寫入一個新的Spark交互層,這提供了更容易的擴(kuò)展性。這一新的Spark交互層的編寫考慮了語言擴(kuò)展的最佳實(shí)踐,并針對交互和性能進(jìn)行了優(yōu)化。長期來看,這種擴(kuò)展性可以用于在Spark中添加對其他語言的支持。
.NET for Apache Spark符合.NET Standard 2.0標(biāo)準(zhǔn),可以在Linux、MacOS和Windows上使用。
官網(wǎng)地址:https://dotnet.microsoft.com/apps/data/spark
快速開始.NET for Apache Spark
在本節(jié)中,我們將展示如何在Windows上使用.NET Core運(yùn)行.NET for Apache SPark應(yīng)用程序。
在開始使用.NET for Apache Spark之前,確實(shí)需要安裝一些東西,如:.NET Core 2.1 SDK | Visual Studio 2019 | Java 1.8 | Apache Spark 2.4.x。具體步驟可以參考這些步驟開始.net for Apache SPark。
一旦安裝完畢,您就可以用三個簡單的步驟開始在.NET中編寫Spark應(yīng)用程序。
在我們的第一個.NET Spark應(yīng)用程序中,我們將編寫一個基本的Spark pipeline,它將統(tǒng)計(jì)文本段中每個單詞的出現(xiàn)次數(shù)。
// 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的特點(diǎn)
可以用C#或者F# 進(jìn)行Apache Spark開發(fā)
.NET for Apache Spark 為您提供了使用 C# 和F# 來操作Apache Spark的APIs。使用這些.NET API,您可以訪問Apache Spark的所有功能,包括Spark SQL,用于處理結(jié)構(gòu)化數(shù)據(jù)和Spark流。
高性能
第一版的.NET for Apache Spark在流行的TPC-H基準(zhǔn)性能測試中的表現(xiàn)就很優(yōu)異。TPC-H基準(zhǔn)性能測試由一組面向業(yè)務(wù)的查詢組成。下圖展示了.NET Core與Python和Scala在TPC-H查詢集上的性能比較。
上面的圖表顯示了相對于Python和Scala,.NET對于Apache Spark的每個查詢性能對比。NET for Apache Spark在Python和Scala上表現(xiàn)良好。此外,在UDF性能至關(guān)重要的情況下,比如查詢1,JVM和CLR.NET之間傳遞3B行非字符串?dāng)?shù)據(jù)的速度比Python快2倍。
同樣重要的是,這是.NET for Apache Spark的第一個預(yù)覽版,我們的目標(biāo)是進(jìn)一步投資于改進(jìn)和基準(zhǔn)測試性能(例如,Arrow優(yōu)化)。您可以按照我們的指示在我們的GitHub倉儲上對此進(jìn)行基準(zhǔn)測試。
利用.NET生態(tài)系統(tǒng)
.NET For Apache Spark允許您重用作為.NET開發(fā)人員已經(jīng)擁有的所有知識、技能、代碼和庫。
您的數(shù)據(jù)處理代碼還可以利用.NET開發(fā)人員可以使用的大型庫生態(tài)系統(tǒng),如Newtonsoft.Json,ML.NET、MathNet.NDigics、NodaTime等。
跨平臺
.NET for Apache Spark可以在Linux、MacOS和Windows上使用,就像.NET的其他部分一樣。
.NET for Apache Spark在Azure HDInsight中默認(rèn)可用,可以安裝在Azure Databricks、Azure Kubernetes服務(wù)、AWS數(shù)據(jù)庫、AWS EMR等中。
開源免費(fèi)
.NET for Apache Spark是一個擁有來自3,700多家企業(yè)的60,000多名代碼貢獻(xiàn)者的強(qiáng)大開源社區(qū)的一部分。
.NET是免費(fèi)的,其中包括用于 .NET for Apache Spark。沒有任何費(fèi)用或許可證費(fèi)用,包括用于商業(yè)用途的費(fèi)用。
.NET For Apache Spark的下一步計(jì)劃
今天是我們旅程的第一步。以下是我們近期路線圖的一些特點(diǎn)。
簡化入門經(jīng)驗(yàn)、文檔和示例
原生集成到開發(fā)人員工具中,如VisualStudio、VisualStudio Code、木星筆記本
.net對用戶定義的聚合函數(shù)的支持
NET的C#和F#的慣用API(例如,使用LINQ編寫查詢)
用Azure數(shù)據(jù)庫、Kubernetes等提供的開箱即用的支持。
使.NET for Apache Spark成為Spark Core的一部分。
總結(jié)
.NET for Apache Spark是微軟使.NET成為構(gòu)建大數(shù)據(jù)應(yīng)用程序的偉大技術(shù)棧的第一步。
想了解更多信息的可以訪問.NET for Apache Spark的github倉儲:https://github.com/dotnet/spark 。
最后,感謝您的閱讀。
本文內(nèi)容,部分參考自:https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/
總結(jié)
以上是生活随笔為你收集整理的分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Asp.Net Core中集成Kafk
- 下一篇: .NET微服务体系结构中为什么使用Oce