.NET for Apache Spark 1.0 现已发布,这是一个用于 Spark 大数据的 .NET 框架,可以让 .NET 开发者轻松地使用 Apache Spark。
该软件包由微软和 .NET Foundation 牵头,经过大约两年的开发。在 2019 年的 Spark + AI 峰会上,微软曾宣布推出 .NET for Apache Spark,并发布了首个预览版本 v0.1.0。
1.0 版本包括以下内容:
支持面向 .NET Standard 2.0 的 .NET 应用程序(建议使用 .NET Core 3.1 或更高版本)。
支持 Apache Spark 2.4/3.0 DataFrame API,包括编写 Spark SQL 的功能。例如:
var spark = SparkSession.Builder().GetOrCreate();
var tweets = spark.Read().Schema("date STRING, time STRING, author STRING, tweet STRING").Format("csv").Load(inputfile);
tweets = tweets.GroupBy(Lower(Col("author")).As("author")).Agg(Count("tweet").As("tweetcount")).OrderBy(Desc("tweetcount"));
tweets.Write().SaveAsTable("tweetcount");
spark.Sql(@"SELECT * FROM tweetcount").show();
能够使用 .NET 用户自定义函数(UDF)编 写Apache Spark 应用程序。例如:
// Define and register UDF
var concat = Udf<int?, string, string>((age, name)=>name+age);// Use UDF
df.Filter(df["age"] > 21).Select(concat(df["age"], df["name"]).Show();
提供 API 扩展框架以添加对其他 Spark 库的支持。当前包括对 Linux foundation Delta Lake、Microsoft OSS Hyperspace、ML.NET、以及对 Apache Spark’s MLLib functionality 的支持。
在 Spark 运行时和 .NET UDFs 之间移动数据的性能工作和改进 pickling interop 以及对 Apache Arrow 的支持。
竞争优势:没有使用 UDF 的 .NET for Apache Spark 程序与基于 Scala 和 PySpark 的非 UDF Spark 应用程序显示出相同的速度。如果应用程序包含UDF,.NET for Apache Spark 程序的速度至少和 PySpark 程序一样快,一般来说更快。
下载地址:https://www.nuget.org/packages/Microsoft.Spark