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

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 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/

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
4月前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
117 5
|
4月前
|
存储 SQL 分布式计算
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
90 3
|
4月前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
75 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
4月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
61 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
4月前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
121 1
|
4月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
67 9
|
4月前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
85 5
|
4月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
72 3
|
4月前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
106 3
|
4月前
|
SQL 分布式计算 大数据
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
82 2

推荐镜像

更多