今天早上六点半左右微信群里就看到张队发的关于. NET Spark 大数据的链接 https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/ , 正印证了 "微软在不断通过. NET Core 补齐各领域开发, 真正实现一种语言的跨平台" 这句话. 那么我们今天就来看看这个 .NET for Apache Spark 到底是个什么鬼?
什么是. 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. 具体步骤可以参考这些步骤 https://github.com/dotnet/spark#get-started 开始. net for Apache SPark https://dotnet.microsoft.com/apps/data/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://www.cnblogs.com/yilezhu/p/10767910.html