当前位置:首页 > Web开发 > 正文

为.net开发人员进行大数据分析提供方便

2024-03-31 Web开发

昨天看个帖子微软市值赶过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个盘问的总执行时间(秒)(越低越好)功效如下图所示。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30006.html