今天早上六点半左右微信群里就看到张队发的关于.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/