今天在Spark + AI峰会上, 咱们很高兴地宣布 .NET for Apache Spark 。 Spark是一种流行的开源分布式处理引擎,适用于大型数据集的分析。Spark可用于处理批量数据,实时流,机器学习和即席查询。git
.NET for Apache Spark旨在使.NET开发人员能够跨全部Spark API访问Apache®Spark™。到目前为止,Spark已经能够经过Scala,Java,Python和R访问,但不能访问.NET。github
咱们计划在开放时(做为.NET Foundation成员项目)与Spark和.NET社区一块儿为Apache Spark开发.NET,以确保开发人员充分利用这两个领域。apache
https://github.com/dotnet/spark session
本文的其他部分提供了有关如下主题的更多细节:机器学习
。用于Apache Spark的.NET提供了高性能API,用于使用C#和F#中的Spark。使用此.NET API,您能够访问Apache Spark的全部方面,包括Spark SQL,DataFrames,Streaming,MLLib等。用于Apache Spark的.NET容许您重用已有的全部知识,技能,代码和库做为.NET开发商。分布式
绑定到Spark的C#/ F#语言将写在一个新的Spark互操做层上,它提供了更容易的扩展性。编写了这个新的Spark interop层,记住了语言扩展的最佳实践,并优化了互操做性和性能。从长远来看,这种可扩展性可用于在Spark中添加对其余语言的支持。函数
.NET for Apache Spark符合.NET Standard 2.0,能够在Linux,macOS和Windows上使用,就像.NET的其他部分同样。.NET for Apache Spark在Azure HDInsight中默承认用,而且能够安装在Azure Databricks等中。性能
在开始使用.NET for Apache Spark以前,您须要安装一些东西。按照如下步骤开始使用.NET for Apache Spark学习
设置完成后,您能够经过三个简单步骤开始在.NET中编写Spark应用程序。
在咱们的第一个.NET Spark应用程序中,咱们将编写一个基本的Spark管道,用于计算文本段中每一个单词的出现次数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// 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();
|
咱们很高兴地说,Apache Spark的第一个预览版本在流行的TPC-H基准测试中表现良好。TPC-H基准包含一套面向业务的查询。下图说明了在TPC-H查询集上.NET Core与Python和Scala的性能。
上图显示了针对Apache Spark与Python和Scala的.NET的每一个查询性能。.NET for Apache Spark在Python和Scala上运行良好。此外,在UDF性能相当重要的状况下,例如查询1,其中在JVM和CLR .NET之间传递3B行非字符串数据,Apache Spark比Python快2倍。
一样重要的是要说这是咱们为Apache Spark首次推出的.NET,咱们的目标是进一步投资改进和基准性能(例如Arrow优化)。您能够按照咱们的说明在咱们的GitHub仓库上对此进行基准测试。
今天标志着咱们旅程的第一步。如下是咱们近期路线图的一些功能。请遵循咱们的GitHub仓库的完整路线图。
看到此列表中缺乏的内容,请在下面给咱们留言
.NET for Apache Spark是咱们将.NET打形成构建大数据应用程序的重要技术堆栈的第一步。
咱们须要您的帮助来塑造Apache Spark的将来,咱们期待看到您使用.NET为Apache Spark构建的内容。您能够经过咱们的GitHub仓库向咱们提供联系。