分享一个.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 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查询集上的性能比较。
上面的图表显示了相对于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的更多相关文章
- 微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器
微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器 在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 预览 ...
- Tiny Mapper是一个.net平台开源的对象映射组件
NET平台开源项目速览(14)最快的对象映射组件Tiny Mapper 阅读目录 1.Tiny Mapper基本介绍 2.Tiny Mapper 基本使用 3.Tiny Mapper 指定配置使用 ...
- 分享一个现代的,免费的,简单而有效的编辑器Vis
Vis是一个免费的开源,类似Vi的代码编辑器,它扩展了vi的模态编辑,内置支持使用相同编辑器的基于结构正则表达式的命令语言实现的多个游标/选择.并将其与基于sam结构正则表达式的命令语言相结合. Vi ...
- 开源免费跨平台opengl opencv webgl gtk blender, opengl贴图程序
三维图形的这是opengl的强项,大型3D游戏都会把它作为首选.图像处理,是opencv的锁定的目标,大多都是C的api,也有少部分是C++的,工业图像表现,图像识别,都会考虑opencv的.webg ...
- JAVA高速开发平台 - 开源 免费 - JEECG
JEECG 微云高速开发平台 当前最新版本号: 3.6.2(公布日期:20160315) 下载地址:http://git.oschina.net/jeecg/jeecg 前言: 随着 WEB UI 框 ...
- 推荐一个c++小巧开源且跨平台的图像解码库
该图像解码库仅仅三个文件. 图像处理封装: spot.cpp spot.h 解码库实现: spot.c 支持图片文件格式如下: File format Read Write BMP files yes ...
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 五.如何做全站采集 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师 ...
- 一款开源的跨平台实时web应用框架——DotNetify
今天给大家介绍一个开源的轻量级跨平台实时HTML+C#.NET Web应用程序开发框架--DotNetify,允许你在C#.NET后端上创建具有React.React Native.Vue或Blazo ...
- 分享一个的c++写的,模仿awk的框架类CAwkDoc
这是我好多年前,模仿awk写的. awk大家都比较熟悉,使用awk处理文件,读取文件,分割字段这些工作awk自己帮你实现了. 程序员只要编写业务逻辑代码,并且awk还提供了很多常用的字符串操作函数,可 ...
随机推荐
- Flask表单(Flask-WTF)
1.request.from获取POST表单数据 # hello.py #coding:utf-8 from flask import Flask,request,render_template ap ...
- rsync 密钥文件错误问题总结
rsync 可以使用 --password-file 选项指定密钥文件,密钥文件中简单存放 rsync 密码:在第一次使用密钥文件的时候经常遇到文件权限相关问题:这里总结一下,我遇到的问题. 问题描述 ...
- es6属性基础教学,30分钟包会
ES6基础智商划重点在实际开发中,ES6已经非常普及了.掌握ES6的知识变成了一种必须.尽管我们在使用时仍然需要经过babel编译.ES6彻底改变了前端的编码风格,可以说对于前端的影响非常巨大.值得高 ...
- PAT1003:Emergency
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- mac 上安装 nvm 遇到的坑
本人之前在 mac 上已经装过 nvm 了,今天帮朋友在他电脑上装,由于是新版本,没想到有点坑. ** 一定要参考官方文档 一.命令行安装 (图片来自 github ) 意思是,无论你安装还是更新 ...
- 静态代码扫描工具PMD定制xml的规则(一)操作篇
0.前言 PMD作为开源的静态代码扫描工具有很强的扩展能力,可使用java或xpath定制rule.第一篇从操作上讲解如何定制一个用于扫描xml是否规范的规则.首先我们知道xml格式的文件在java工 ...
- 《Hadoop金融大数据分析》读书笔记
<Hadoop金融大数据分析> Hadoop for Finance Essentials 使用Hadoop,是因为数据量大数据量如此之多,以至于无法用传统的数据处理工具和应用来处理的数据 ...
- app后端设计(9)-- 动态通知
在app中,例如在通知界面,当新通知的时候,需要显示有多少条通知,用户点击"获取新通知"后,就能看到新的通知. 那么在app端,怎么才能知道有多少条新通知? 实现的技术有两种: 1 ...
- app后端设计(13)--IM4JAVA+GraphicsMagick实现中文水印
在app的后台中,有时候为了标示版权,需要给图片加上水印. 在liunx中,IM4JAVA+GraphicsMagick是个高效处理图片的方案,图片的裁剪是使用了这个技术方案,为了减少不必要的开发成本 ...
- Spring MVC温故而知新 – 请求映射RequestMapping
RequestMapping注解说明 @RequestMapping注解的作用将Web请求映射到特定处理程序类和/或处理程序方法,这个注解可以用于类或者方法上,并通过属性value指定请求路径.用在C ...