分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark

640?wx_fmt=png

今天早上六点半左右微信群里就看到张队发的关于.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中添加对其他语言的支持。

640?wx_fmt=png

.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 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开发

.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查询集上的性能比较。
640?wx_fmt=png

上面的图表显示了相对于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/

640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round #760 (Div. 3)

E. Singers’ Tour F. Reverse G. Trader Problem 推推式子就行了。 int a[N]; int main() {int t;scanf("%d", &t);while(t --){int n;LL sum 0;scanf("%d", &n);for(int i 1;i < n;i ) scanf("%d", ai), sum a[i];a[0] a[n]…

acwing3132. 食物(BZOJ3028)

acwing3132. 食物 题意&#xff1a; 你当然要帮他计算携带 N 件物品的方案数。 承德汉堡&#xff1a;偶数个。 可乐&#xff1a;0 个或 1 个。 鸡腿&#xff1a;0 个&#xff0c;1 个或 2 个。 蜜桃多&#xff1a;奇数个。 鸡块&#xff1a;4 的倍数个。 包子&#xff1a;0 个…

持续畅销20年的《C#高级编程》出第11版了!

TA是谁&#xff1f;Wrox精品红皮书&#xff0c;引领无数程序员进入程序开发殿堂&#xff0c;C#专家级指南&#xff0c;是经验丰富的程序员提高效率的更快捷方式&#xff0c;连续畅销20年&#xff0c;累计销量超30万册。TA出生名门&#xff1a;TA战绩辉煌&#xff1a;2019新的征…

cfF. Boring Queries

cfF. Boring Queries 题意&#xff1a; n个数组a[]&#xff0c;q个询问&#xff0c;每次询问区间[l,r]的lcm值 题目要求强制在线 1<n<1e5 1<a<2e5 1<q<1e5 题解&#xff1a; 添加链接描述 添加链接描述 添加链接描述 我们一般求lcm都是直接通过ab/gcd(a…

Educational Codeforces Round 119 (Rated for Div. 2)

D. Exact Change E. Replace the Numbers G. Subsequences Galore 因为1和2的数量最大值不是很多&#xff0c;多了的话可以用3代替&#xff0c;那么枚举1和2的数量然后二分3的数量 int a[110], n; bitset<10> bit; bool ch(int x) {for(int i 1;i < n;i ){int num …

.NET微服务体系结构中为什么使用Ocelot实现API网关

为什么要使用API网关而不是直接通信&#xff1f;在微服务架构中&#xff0c;客户端应用程序通常需要使用来自多个微服务的功能。如果直接执行该消费&#xff0c;则客户端需要处理多个微服务端点以进行呼叫。当应用程序发展并引入新的微服务或更新现有的微服务时会发生什么&…

P2000 拯救世界

P2000 拯救世界 题意&#xff1a; 为了拯救世界&#xff0c;小 a 和 uim 决定召唤出 kkksc03 大神和 lzn 大神。根据古籍记载&#xff0c;召唤出任何一位大神&#xff0c;都需要使用金木水火土五种五行神石来摆一个特定的大阵。而在古籍中&#xff0c;记载是这样的&#xff1…

Codeforces Round #762 (Div. 3)

E. MEX and Increments F. Let’s Play the Hat? G. Unusual Minesweeper H. Permutation and Queries 用个优先队列模拟。 map<int,int>ma; priority_queue<int> q;int main() {int t;scanf("%d", &t);while(t --){int n;scanf("%d", …

基于Jenkins Pipeline的ASP.NET Core持续集成实践

最近在公司实践持续集成&#xff0c;使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署&#xff0c;因此这里总结一下。一、关于持续集成与Jenkins Pipeline1.1 持续集成相关概念互联网软件的开发和发布&#xff0c;已经形成了一套标准流程&#xff0c…

踩不出足迹(牛客练习赛88 )

踩不出足迹(牛客练习赛88 ) 题意&#xff1a; 长度为n的数组a&#xff0c;每个数是一个k位二进制 定义一下操作&#xff1a; 令第一次得到的结果为 a1a_1a1​。你需要从第二个数开始&#xff0c;每次可以选择与上一次得到的结果异或或者同或起来。 问最大值是多少&#xff1f…

Codeforces Round #766 (Div. 2)

D. Not Adding E. Not Escaping F. Not Splitting 直接枚举就行了&#xff0c;原本还想的是素倍数&#xff0c;但是素倍数也不行。 bool dis[N];int main() {int n, x;scanf("%d", &n); int ans -n;while(n --)scanf("%d", &x), dis[x] 1;for(…

编程语言之父谈语言设计,龟叔大赞TypeScript

争论哪门编程语言孰优孰劣&#xff0c;长期以来都是程序员乐此不疲的“娱乐活动”。之所以说是娱乐活动&#xff0c;因为这些争论到最后往往只是各自在发泄情绪&#xff0c;再则就是&#xff0c;脱离使用场景去讨论所谓哪门语言更好并没意义。但如果让编程语言作者坐在一起讨论…

P2656 采蘑菇

P2656 采蘑菇 题意&#xff1a; 有n个点&#xff0c;m个单向边&#xff0c;每个边都有边权&#xff0c;如果经过这个边&#xff0c;可以获得其边权&#xff0c;而其边权会变成原来的p倍(0.1<p<0.8)&#xff0c;向下取整 从s点出发&#xff0c;问最多可以采到的蘑菇 题…

Codeforces Round #764 (Div. 3)

A. Plus One on the Subset B. Make AP C. Division by Two and Permutation D. Palindromes Coloring E. Masha-forgetful F. Interacdive Problem G. MinOr Tree 就是最小值逐步增加到最大值的过程。 int main() {int t;scanf("%d", &t);for(int _ 1;_ <…

你必须知道的 SmartSql

介绍SmartSql MyBatis Cache(Memory | Redis) R/W Splitting Dynamic Repository Diagnostics ......简洁、高效、高性能、扩展性、监控、渐进式开发&#xff01;她是如何工作的&#xff1f;SmartSql 借鉴了 MyBatis 的思想&#xff0c;使用 XML 来管理 SQL &#xff0c;并…

CF785D Anton and School - 2

CF785D Anton and School - 2 题意&#xff1a; 给定一个长度≤210^5由(和)组成的字符串&#xff0c;问有多少个子串&#xff08;可以不连续&#xff09;&#xff0c;前半部分是由(组成后半部分由)组成. 题解&#xff1a; 怎么括号匹配能出这么多题 如何才能不重不漏的选出…

OsharpNS轻量级.net core快速开发框架简明入门教程

OsharpNS官方资源项目地址&#xff1a;https://github.com/i66soft/osharp-ns20演示地址&#xff1a;https://www.osharp.org 直接使用QQ登录可以查看效果文档地址&#xff1a;https://docs.osharp.org 正在完善中....发布博客&#xff1a;https://www.cnblogs.com/guomingfeng…

cf1491C. Pekora and Trampoline

cf1491C. Pekora and Trampoline 题意&#xff1a; 有n个蹦床&#xff0c;每个蹦床有它的弹力值bib_{i}bi​,从i蹦床起跳可以落到ibiib_{i}ibi​的位置上(前提是这个位置有蹦床)&#xff0c;跳完后&#xff0c;蹦床的弹力值会减1&#xff0c; 题解&#xff1a; 对于一个蹦床…

.net core 注入机制与Autofac

本来是要先出注入机制再出 管道 的&#xff0c;哈哈哈……就是不按计划来……这里扯扯题外话&#xff1a;为什么要注入&#xff08;DI&#xff0c;dependency-injection&#xff09;&#xff0c;而不用 new 对象&#xff1f;可能我们都很清楚&#xff0c;new 对象所造成的影响就…

2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛

2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛 题号题目知识点AChuanpai水题BHotpot贪心CTriangle PendantDRock Paper Scissors队友做的不知道EDon’t Really Like How The Story Ends思维栈FDirection SettingGHourly Coding ProblemHNihongo wa Muzukashii D模拟IMon…