微软发布.NET版本的Spark,高效而强大

昨天看个帖子微软市值超过1万亿美刀,凭什么?我们可以找出很多理由,但是我认为和阿三CEO的开源战略关系很大。从开源.net到WSL到微软云微软从昔日的开源死敌,到今天的怀抱开源。日前在Spark + AI峰会上,微软发布了开源的.NET for Apache Spark,从而在大数据领域又添加了一枝华章。本文虫虫就给大家介绍一下个项目。

概述

我们以前也介绍过,Apache Spark是Apache基金会旗下的时下最流行的开源分布式内存式大数据处理引擎。 Spark可用于处理批量数据,实时数据流,支持机器学习和即时数据查询。

.NET for Apache Spark项目主要用于创建跨Spark API的Spark原生操作库,为.net开发人员进行大数据分析提供方便。此前Spark官方支持Scala,Java,R和Python,至此又增加了.net。

.NET for Apache Spark将做为.NET Foundation开源自项目发布,项目已经通过Github发布,可以通过Github获取所有的源码(仓库为github:/dotnet/spark)。

介绍

.NET for Apache Spark为.net应用提供了原生的高性能API,他打包了Spark操作操作层上,可以为多种语言提供高性能访问类库,可以支持C#和F#等.net语言。

通过.NET API,我们可以高效访问Apache Spark的所有组件,包括Spark SQL,DataFrames,Streaming,MLLib等。

.NET for Apache Spark符合.NET标准,遵循.NET API的正式规范,我们在.NET代码中随时引入,插拔式的插入,非常容易扩展。现有.net项目和代码,编码习惯等都可以无缝引入到.NET for Apache Spark的项目开。基于.NET Standard 2.0,可以括平台在Linux,macOS和Windows上使用,还支持云架构,微软云Azure HDInsight中已经默认启用,也可以安装在Azure Databricks等中。

实例入门

.NET for Apache Spark的使用需要预装.net core和Spark包括:

.NET Core 2.1 SDK

Java 1.8

Apache Spark 2.4.1

Microsoft.Spark.Worker

安装设置好以上软件后,就可以开始Spark应用的开发了,本我们提供两个简单实例分别说明在C#和F#的应用。

C# 实例:

//创建一个Spark session

var spark = SparkSession

.Builder()

.AppName("word_count_sample")

.GetOrCreate();

//创建一个数据框

DataFrame dataFrame = spark.Read().Text("input.txt");

//操纵和查看数据

var words = dataFrame.Select(Split(dataFrame["value"], " ").Alias("words"));

words.Select(Explode(words["words"])

.Alias("word"))

.GroupBy("word")

.Count()

.Show();

F#:实例

//创建一个Spark session

let spark =

SparkSesstion.Builder()

.AppName("word_count_sample")

.GetOrCreate()

//创建一个数据框

let df = spark.Read().Text("input.txt")

let words = df.Select(Split(df.["value"], " ").Alias("words")

words.Select(Explode(words["words"]).Alias("word"))

.GroupBy("word")

.Count()

性能分析

数据分析很重要的一个方面就能高性能性操作和分析。.NET for Apache Spark在发布之前就做了很多的系能测试,官方对其预览版本进行了TPC-H基准测试,结果显示.NET for Apache Spark系能表象良好。官方进行的TPC-H基准包含一套面向业务的查询。下面的图例说明了在TPC-H查询集上.NET Core与Python和Scala的性能对比。

上图显示了.NET for Apache Spark,Python及Scala在Apache Spark上每个查询性能。 .NET for Apache Spark性能表现良好。此外,在UDF性能至关重要的情况下,例如查询1,其中在JVM和CLR .NET之间传递3B行非字符串数据,Apache Spark比Python快2倍。

TPC-H基准测试中所有22个查询的总执行时间(秒)(越低越好)结果如下图所示。

数据源自TPC-H基准测试的内部运行,在Ubuntu 16.04上使用热执行。

当然由于基准测试使用的是.NET for Apache Spark预览,没有很多的优化,正式版本的性能会有更进一步的优化和提高。

发展展望

正式发布后Visual Studio Code才算是踏上万里长征的第一步,官方也提供了以后发展路线图,提供值得期望的有:

简化入门体验,文档和示例

与Visual Studio,Visual Studio Code,JupyterNote等开发人员工具进行有机集成

.NET支持用户定义的聚合函数

提供C#和F#的常用的API和实例用于(例如,使用LINQ进行查询)

提供Azure Databricks,Kubernetes等开箱即用的支持。

为Spark Spark构建.NET for Spark Spark。

来源:SEO公司

原文地址:https://www.cnblogs.com/1994jinnan/p/12324628.html

时间: 2024-10-09 03:06:45

微软发布.NET版本的Spark,高效而强大的相关文章

微软发布TFS 2018!

也许你还没来得及使用TFS 2017,今天,微软已经发布了TFS 2018的第一个版本(RC1). 与之前所有的候选版本一样,这是一个正式上线(微软成称为go-live)的TFS版本.如果你计划采纳TFS系统,或者正在使用TFS系统,你完全可以大胆的升级或者安装使用这个版本,微软可以为这个版本提供技术支持. 通过下面这个地址,你可以下载TFS 2018的安装镜像文件 https://go.microsoft.com/fwlink/?LinkId=856342 2018是微软发布的TFS系统的大版

微软发布针对最新IE漏洞的安全通报2963983

?? 微软于昨天发布了一篇最新的安全通报2963983 .这篇安全通报主要介绍了一个最新被披露的IE漏洞,漏洞涉及目前所有受支持的IE版本,并且包括Windows XP中的IE版本.由于Windows XP系统已经退役,因而在此篇安全通报文章中没有将Windows XP列为受影响的系统.对于现有的Windows XP用户而言,大家可能更加关心这个漏洞对于Windows XP用户有什么影响,用户需要采取什么样的措施来进行预防.就目前而言,我们已经发现了一些有限的.针对特定目标的攻击行为利用了这一I

微软发布独立Android模拟器 为开发者提供测试

微软发布了 Visual Studio 2015 正式版,除了免费的社交版之外,另外也有付费的专业版.这套工具除了提供 Windows 应用程序的整合环境之外,你也可以利用它来开发 Android 程序,因此,微软除了在 Visual Studio 2015 中提供了模拟 Android 环境之外,另外也免费提供了一个独立的 Android 模拟器供开发者测试. Visual Studio 2015 所提供的这个独立版 Android 模拟器,并不需要安装 Visual Studio 2015

微软发布 Linux 下的 SQL Server 公众预览版

微软发布了它的下一个版本的 SQL Server 数据库的公众预览版,同时支持 Linux 和 Windows. 在今年 3 月,微软发布过 SQL Server for Linux 的一个内部预览版.同时,微软官方说 SQL Server for Linux 是 SQL Server for Windows 版本的一个子集,将可以运行在 Ubuntu 上或作为 Docker 镜像运行(后来补充说内部预览也支持 Red Hat 的 RHEL).该公司官方称用户购买的 SQL Server 将可以

[分享] 关于“微软发布便捷更新包”,我个人的一点不负责任的解说

考虑到国外区人气比较高,发布在这里.若有不妥,劳烦版主移动或删除,谢谢! 今天,有网站发布了题为"微软发布"便捷更新包",Win7/Win8.1系统更新不用愁"的新闻,卡饭资讯区亦有转载http://bbs.kafan.cn/thread-2041395-1-1.html新闻大意是微软为win7/win8.1用户发布了积累更新包,以后全新安装系统后可以用这个直接打补丁,不用等windows updata遥遥无期了.这个新闻让我眼前一亮,感觉相当于win7 sp2来了

微软发布了开发社区采用.NET Standard的最新信息

最近,微软发布了开发社区当前采用.NET Standard的最新信息..NET Standard是API的正式规范,现有.NET实现在不同平台的是通用的(从而允许跨平台开发).当前规范(版本2.0)在两年前发布,在.NET Core 2.0和.NET Framework 4.6.1平台(以及其他平台)中得到支持.根据微软.NET团队的项目经理和该标准的撰写人Immo Landwerth的说法: .NET Standard用于共享代码..NET Standard是一组API,所有.NET实现必须提

微软发布Windows Terminal Preview v0.10

导读 近日微软推出了 Windows Terminal Preview v0.10,你可以从微软商店或者 GitHub 找到它. 其实就在 2 月,微软发布了“功能完善的” 的 v0.9,还还表示该版本是“在 v1 发布之前的最后一个版本”,未料不过一月,又迭代一版本,引入两个新功能:鼠标输入.复制 Pane. 据介绍,该终端现在支持鼠标输入的视窗子系统的应用程序,以及使用虚拟终端输入的视窗应用程序.微软表示:“这意味着,当你点击终端窗口中的项目时,tmux 和 Midnight Command

微软发布6月漏洞补丁 安全狗建议及时修复

北京时间6月10日凌晨,微软发布了2015年6月安全公告https://technet.microsoft.com/library/security/ms15-jun,本次更新共含8个补丁,其中2个级别为"严重",其余6个级别为"重要",主要修复了 Windows 系统.Office及IE浏览器等组件中的漏洞.服务器安全狗已经第一时间推送了安全更新,请及时修复安全狗提示给您的系统高危漏洞,避免漏洞被利用遭到攻击. 2015年6月微软安全公告简要如下: MS15-05

Android通过Gradle发布多渠道版本遇到的Gradle版本问题解决

今天在通过Gradle发布多渠道版本的时候,遇到了Gradle版本过低导致不支持manifestPlaceholders字段的问题,想尽各种办法升级Gradle.Gradle的插件,最后终于成功了,在这里把方法分享给大家. 本人使用的是Intellij IDEA 13,Gradle版本是1.8,Gradle插件版本是0.6.+,需要将Gradle升级到2.1,插件版本升级到0.14+.遇到的错误是: Deprecated dynamic property: "manifestPlaceholde