微软发布 .Net for Apache Spark :用什么语言开发大数据都可以

简介: Apache Spark 是当今最流行的开源大数据处理框架。Spark 用于进行分布式、大规模的数据处理,提供了更高级的编程接口、更高的性能。除此之外,Spark 不仅能进行常规的批处理计算,还提供了流式计算支持。

image

4 月 24 日,在 Spark+AI 峰会 上,我们很高兴地宣布推出 .NET for Apache Spark。Spark 是一种流行的开源分布式处理引擎,用于分析大型数据集。Spark 可用于处理批量数据、实时流、机器学习和即席查询(ad-hoc query)。

.NET for Apache Spark 旨在使 .NET 开发人员可以跨所有 Spark API 来访问 Apache® Spark™。到目前为止,Spark 已经可以通过 Scala、Java、Python 和 R 来访问,但尚不能通过 .NET 来访问。

我们计划在 open(作为.NET Foundation 成员项目)中为 Apache Spark 开发 .NET,同时与 Spark 和 .NET 社区一起开发,以确保开发人员能够在这两方面都做得很好。

本文将阐述关于以下主题的更多细节:

什么是 .NET For Apache Spark?
.NET for Apache Spark 入门
.NET for Apache Spark 性能
.NET For Apache Spark 的下一步
结语

什么是 .NET for Apache Spark?
.NET for Apache Spark 提供了高性能 API,用于使用 C# 和 F# 中的 Spark。通过这个 .NET API,开放人员可以访问 Apache Spark 的所有方面,包括 Spark SQL、DataFrame、Streaming、MLLib 等。.NET for Apache Spark 允许 .NET 开发人员重用已有的所有知识、技能、代码和库。

绑定到 Spark 的 C#/F# 语言将被编写到一个新的 Spark 互操作层上,该层提供了更容易的可扩展性。这一新的 Spark 互操作层的编写,考虑到了语言扩展的最佳实践,并针对互操作性和性能进行了优化。从长期来看,这种可扩展性可用于在 Spark 中增加对其他语言的支持。

你可以通过访问这个 提案 来了解更多关于这项工作的细节
image

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 for Apache Spark。
设置完成之后,我们可以通过三个简单的步骤在 .NET 中开始编写 Spark 应用。
在我们的第一个 .NET Spark 应用中,我们将编写一个基本的 Spark 管道,用于计算文本段中每个单词的出现次数。

// 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 性能

我们很高兴地宣布,.NET fro Apache Spark 的第一个预览版本在流行的 TPC-H 基准 测试中表现良好。TPC-H 基准由一组面向业务的查询组成。下图展示了 .NET Core 与 Python、Scala 在 TPC-H 查询集上的性能对比。

image

上图显示了 .NET for Apache Spark 与 Python 和 Scala 的每个查询性能对比。.NET for Apache Spark 对阵 Python 和 Scala 时表现出色。此外,在 UDF 性能至关重要的情况下,例如查询 1,其中在用于 Apache Spark 的 JVM 和 CLR 之间传递 3B 行的非字符串数据,就其传递速度而言,.NET 要比 Python 快上 2 倍。

同样重要的是,这是我们为 Apache Spark 开发的第一个 .NET 预览版,我们的目标是进一步致力于改进和基准测试性能(如 Arrow 优化)。你可以按照我们的说明在 Github repo 上对其进行基准测试。

.NET For Apache Spark 的下一步

今天 .NET for Apache Spark 的发布,是我们征途的第一步。以下是我们近期路线图的一些功能,请关注我们的 GitHub repo完整路线图

  • 简化入门体验、文档与示例。
  • 与 Visual Studio、Visual Studio Code、Jupyter notebooks 等开发工具进行原生整合。
  • .NET 支持用户定义的聚合函数。
  • 用于 C# 和 F# 的 .NET 惯用 API(如,使用 LINQ 编写查询)。
  • 对 Azure Databricks、Kubernetes 等开箱即用的支持。
  • 将 .NET for Apache Spark 作为 Spark Core 的部分。你可以访问此 网址 跟踪进程。

结语

.NET for Apach Spark 是我们将 .NET 打造成构建大数据应用程序的重要技术堆栈的第一步。

我们需要你的帮助来为 .NET for Apache Spark 塑造未来。我们期待你使用 .NET for Apache Spark 进行构建。你可以通过我们的 GitHub repo,向我们伸出援助之手。


原文链接:https://www.infoq.cn/article/meOQHWjeosl6q-l4iC05
翻译自:https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/

相关文章
|
6月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
358 0
|
9月前
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
451 79
|
10月前
|
人工智能 芯片
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
|
8月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
327 0
|
12月前
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
211 9
|
12月前
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
183 8
|
12月前
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
189 7
|
12月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
363 5

推荐镜像

更多