Spark 3.5.0 特性速览

介绍

Spark 3系列已经发布了第六版3.5.0,目前最新3.5.1。

  • 使用最广泛的大数据可扩展计算引擎。
  • 数以千计的公司,包括 80% 的财富 500 强企业,都在使用 Apache Spark。
  • 来自业界和学术界的 2000 多名开源项目贡献者。
    在这里插入图片描述

Apache Spark 3.5.0 是 3.x 系列中的第六个版本,该版本在开源社区的大力贡献下解决了超过 1,300 个 Jira 问题。

版本摘要

此版本在以下几个方面取得了显著进展:

  1. 对 Spark Connect 的适用场景进行了扩展,包括了对 Scala 和 Go 客户端的全面支持,提供了分布式训练与推理功能,并增强了对 Structured Streaming 的兼容性。

  2. 引入了新的 PySpark 和 SQL 功能,例如 SQL 中的 IDENTIFIER 子句、SQL 函数调用的命名参数支持、HyperLogLog 近似聚合的 SQL 函数支持,以及 Python 用户自定义表函数。

  3. 通过集成 DeepSpeed,简化了分布式训练的过程。

  4. 引入了水印(watermark)在各个算子间的传播机制。

  5. 在 Structured Streaming 中引入了 dropDuplicatesWithinWatermark 操作,使得在特定水印范围内去重数据成为可能。

Apache Spark 3.5.0 版本在提升连接服务、增强编程语言支持、丰富PySpark和SQL功能、优化分布式训练及强化流处理能力等方面均实现了重要改进与创新。

亮点内容

亮点内容:

  1. Spark Connect 支持 Scala 和 Go 客户端 (SPARK-42554, SPARK-43351):Spark Connect 现已为 Scala 和 Go 语言提供客户端支持。

  2. 基于 PyTorch 的分布式机器学习支持 (SPARK-42471):Spark Connect 集成了对基于 PyTorch 的分布式机器学习的支持。

  3. Python 和 Scala 中的 Spark Connect 结构化流处理支持 (SPARK-42938):在 Python 和 Scala 中增加了对 Spark Connect 结构化流处理功能的支持。

  4. Python Spark Connect 客户端的 Pandas API 支持 (SPARK-42497):Python Spark Connect 客户端现在支持使用 Pandas API。

  5. 引入 Arrow Python UDFs (SPARK-40307):新增了对 Arrow Python 用户定义函数(UDFs)的支持。

  6. 支持 Python 用户定义表函数 (SPARK-43798):添加了对 Python 用户自定义表函数的支持。

  7. 将 PySpark 错误迁移到错误类上 (SPARK-42986):改进了 PySpark 错误处理机制,将其整合到专门的错误类中。

  8. PySpark 测试框架 (SPARK-44042):推出了 PySpark 测试框架以方便进行单元测试。

  9. 添加对 Datasketches HllSketch 的支持 (SPARK-16484):内置了对 Datasketches HllSketch 数据结构的支持。

  10. 内置 SQL 函数改进 (SPARK-41231):提升了内置 SQL 函数的功能。

  11. 引入 IDENTIFIER 子句 (SPARK-43205):在 SQL 中引入了 IDENTIFIER 子句以支持特定语法特性。

  12. 将 SQL 函数添加到 Scala、Python 和 R API 中 (SPARK-43907):各编程接口现均支持直接调用 SQL 函数。

  13. 添加 SQL 函数的命名参数支持 (SPARK-43922):允许在调用 SQL 函数时使用命名参数。

  14. 当 Shuffle 数据迁移后避免因执行器下线而无谓地重新运行任务 (SPARK-41469):优化任务调度逻辑,减少不必要的任务重跑。

  15. 分布式 ML 与 Spark Connect 的集成 (SPARK-42471):加强了分布式机器学习与 Spark Connect 的结合。

  16. DeepSpeed 分布式优化器支持 (SPARK-44264):集成 DeepSpeed 以简化分布式训练过程。

  17. 实现 RocksDB 状态存储的变更日志检查点 (SPARK-43421):改进了 RocksDB 状态存储的持久化机制。

  18. 引入水印在运算符间的传播 (SPARK-42376):在 Spark 中实现水印信息在不同运算阶段之间的传递。

  19. 引入 dropDuplicatesWithinWatermark 操作 (SPARK-42931):在结构化流处理中增加了根据水印去除重复数据的操作。

  20. 提升 RocksDB 状态存储提供程序的内存管理效能 (SPARK-43311):针对 RocksDB 状态存储进一步优化了内存管理机制。

值得一提

Spark Connect 相关改进与介绍

  1. sql模块重构:为了在Scala Spark Connect客户端和Spark之间共享一个最小化的依赖集合,并避免拉取所有Spark的传递依赖项,将sql模块重构为sql和sql-api两个模块。(SPARK-44273)

  2. Scala客户端引入:正式推出用于Spark Connect的Scala客户端,使得Scala开发者可以直接利用Spark Connect进行相关操作。(SPARK-42554)

  3. Python Spark Connect客户端的Pandas API支持:为Python版Spark Connect客户端增添了对Pandas API的支持,用户可以更便捷地进行数据处理和分析。(SPARK-42497)

  4. 基于PyTorch的分布式ML支持:Spark Connect现已支持基于PyTorch的分布式机器学习功能,便于用户构建和部署大规模机器学习应用。(SPARK-42471)

  5. Python和Scala中的结构化流处理支持:为Python和Scala环境下的Spark Connect增加了结构化流处理功能,使得用户可以更好地处理实时或连续的数据流。(SPARK-42938)

  6. Go客户端初始版本发布:发布了Go语言版本的Spark Connect客户端初始版本,扩大了Spark Connect对更多开发者的语言覆盖范围。(SPARK-43351)

  7. 跨Python和Scala的Spark原生与Spark Connect客户端间的兼容性改进:对Spark原生API与Spark Connect客户端在Python和Scala环境下的兼容性进行了大量优化,确保了两者间顺畅协作。

  8. 客户端应用程序调试性和请求处理能力提升:增强了客户端应用的调试功能及请求处理性能,如异步处理、重试机制和长期查询等,以提高应用程序的稳定性和效率。

Spark SQL 新增功能详解

  1. 添加元数据列文件块起始位置和长度:SPARK-42423,Spark SQL 现在支持在元数据中记录列文件的块起始位置和长度信息。

  2. 在 Scala/Java sql() 方法中支持位置参数:SPARK-44066,在 Scala 和 Java API 中的 sql() 方法中添加了对位置参数的支持,使得可以通过索引方式传入 SQL 查询参数。

  3. 在函数调用解析器中添加命名参数支持:SPARK-43922,在 SQL 解析器中为函数调用增加了命名参数的支持,使得在调用函数时可采用“名称=值”的形式指定参数。

  4. 支持 INSERT INTO 语句源关系中带有 ORDER BY, LIMIT, OFFSET 的 SELECT DEFAULT:SPARK-43071,Spark SQL 现在允许在 INSERT INTO 语句中插入源表通过 ORDER BY、LIMIT 和 OFFSET 进行筛选后的 DEFAULT 行。

  5. 为 TVF(Table-Valued Function)调用添加 PARTITION BY 和 ORDER BY 子句的 SQL 语法:SPARK-44503,在 TVF 调用时可以在 TABLE 参数后紧跟 PARTITION BY 和 ORDER BY 子句。

  6. 在 DESCRIBE 和 SHOW CREATE TABLE 输出中包含列默认值信息:SPARK-42123,现在在 DESCRIBE 和 SHOW CREATE TABLE 命令的结果中会展示列的默认值。

  7. 为 Catalog.listCatalogs 添加可选模式参数:SPARK-43792,Catalog API 中的 listCatalogs 方法现在支持过滤返回结果,可以根据提供的可选模式匹配列出目录。

  8. 为 Catalog.listDatabases 添加可选模式参数:SPARK-43881,Catalog API 中的 listDatabases 方法也支持过滤返回结果,同样可根据提供的可选模式匹配列出数据库列表。

  9. 当准备好执行时触发回调:SPARK-44145,Spark SQL 引入了一个新功能,可在计划执行准备就绪时触发用户自定义的回调函数。

  10. 支持按名称插入(Insert By Name)语句:SPARK-42750,Spark SQL 现在支持按照列名而非列顺序来插入数据。

  11. 为 Scala API 添加 call_function 方法:SPARK-44131,在 Scala API 中新增 call_function 方法,以便直接从代码中调用 SQL 函数。

  12. 稳定的派生列别名:SPARK-40822,Spark SQL 改进了派生列的别名生成机制,确保其在整个查询过程中保持一致。

  13. 支持通用常量表达式作为 CREATE/REPLACE TABLE OPTIONS 的值:SPARK-43529,在创建或替换表时,选项参数(OPTIONS)现在可接受更为复杂的常量表达式作为值。

  14. 支持通过 INTERSECT/EXCEPT 操作符实现关联子查询:SPARK-36124,Spark SQL 已经能够处理含有关联条件的INTERSECT/EXCEPT子查询。

  15. IDENTIFIER 子句:SPARK-43205,引入了 IDENTIFIER 子句,用于在 SQL 语句中更加灵活地引用和处理标识符(如表名、列名等)。

  16. ANSI 模式下:Conv 函数在内部转换溢出时应返回错误:SPARK-42427,在遵循 ANSI 标准的模式下,当 Conv 函数进行数据类型转换时如果发生溢出,将会抛出错误。

其他

此外还有Core、PySpark、Structured Streaming、ML和UI等等诸多方面的改进。Spark 3.5还提示了将会移除对Java 8和Java 11的支持,改为最低Java 17。

小结

技术创新与性能、生态扩展与兼容性、稳定性与易用性等方面全面提升,Apache Spark 3.5.0的发布对于整个大数据生态系统而言,不仅意味着性能和功能上的实质性飞跃,也是对当下及未来大数据处理需求的有力回应,通过不断演进与优化,巩固了Spark在大数据处理领域的领先地位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音视频爬虫提取工具界面|视频批量下载软件

抖音视频爬虫界面解析 一:概述 抖音视频爬虫是一款功能强大的工具,主要提供关键词批量提取视频和单独视频提取的功能,并支持提取后的视频下载操作。 二:功能解析 2.1:关键词批量提取视频的解析 用户可以通过输入关键…

Kotlin中单例模式和Java的对比浅析

前言 单例模式,一直以来是我们在日常开发中最常用的一种设计模式,更是面试中非常重要,也非常容易被问到的问题。在日常开发中,大家常用的语言还是Java,但今天我给大家带来的是在Kotlin语言中,单例模式是怎…

计算机服务器中了faust勒索病毒怎么办?Faust勒索病毒解密工具流程

在科技技术飞速发展的今天,网络计算机技术也得到了极大发展,为企业的生产运营提供了极大便利,越来越多的企业利用网络开展各项工作业务,许多企业离开了网络几乎很难运转,这也导致了企业越来越重视网络安全问题。近日&a…

第二证券策略:股指预计维持震荡格局 关注汽车、半导体等板块

第二证券指出,方针组合拳齐下,商场蓄势待起,短期指数或向上挑战3100点,低位业绩板块、叠加AI或是3月商场主要出资主线,尽管商场情绪高涨,但不主张情绪化追涨,究竟上方还有压制,放量打…

2024.3.19

1.哈希表 代码: #include"hash.h"//申请结点 node_p create_node(int data) {node_p new (node_p)malloc(sizeof(node));new->data data;return new; } //存入哈希表 void insert(node_p H[],int key) {//数据要存入哈希表中指定下标的位置int i …

【Mysql数据库基础03】分组函数(聚合函数)、分组查询

分组函数(聚合函数)、分组查询 1 分组函数1.1 简单的使用1.2 是否忽略null值1.3 和关键字搭配使用1.4 count函数的详细介绍1.5 练习 2 分组查询Group by2.1 简单的分组查询2.2 练习 3 格式投票:yum: 1 分组函数 1.1 简单的使用 COUNT(expression):计算符…

一维小波包的分解与重构程序深入学习——Matlab

绘制上述图的matlab程序为: clear all; close all; load noisdopp; xnoisdopp; wptwpdec(x,3,db1,shannon) %返回小波包树,设置采用的熵为shannon plot(wpt); %% 学习目标:一维小波包的分解和重构深入学习 %% 获取小波树上某个节点的小…

代码随想录day21(1)二叉树:平衡二叉树(leetcode110)

题目要求:判断一棵树是否为平衡二叉树 思路:递归地比较左右子树,只要有一棵子树不满足条件就说明这棵树不是平衡二叉树。本题采用迭代法较为复杂。 leetcode实战: 代码实现: 递归: 迭代:

python失物招领系统-安卓-flask-django-nodejs-php

对于本失物招领 的设计来说, 它是应用mysql数据库、安卓等技术动态编程以及数据库进行努力学习和大量实践,并运用到了 建设中在整个系统的设计当中,具体根据网上失物招领的现状来进行开发的,具体根据用户需求实现网上失物招领网络…

Java 设计模式系列:行为型-状态模式

简介 状态模式(State Pattern)是一种行为型设计模式,允许一个对象在其内部状态改变时改变其行为。状态模式中类的行为是由状态决定的,在不同的状态下有不同的行为。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂…

[Labtools 27-1429] XML parser encountered a problem in file

平台:Vivado2108.3 最近在使用vivado的debug过程中发现,编译好工程后打开open hardware manager出现如下错误。 [Labtools 27-1429] XML parser encountered a problem in file E:/githome/xxxx/hw_1/hw.xml at line 1 : XML character encoding not su…

智能合约语言(eDSL)—— 使用rust实现eDSL的原理

为理解rust变成eDSL的实现原理,我们需要简单了解元编程与宏的概念,元编程被描述成一种计算机程序可以将代码看待成数据的能力,使用元编程技术编写的程序能够像普通程序在运行时更新、替换变量那样操作更新、替换代码。宏在 Rust 语言中是一种功能&#x…

机器人离散化阻抗控制

机器人离散化阻抗控制是一种控制策略,它结合了阻抗控制的思想与离散化方法,以实现对机器人运动与外力之间动态关系的精细调节。这种控制方法旨在使机器人在与环境交互时能够表现出期望的阻抗特性,从而实现对接触力和位置的精确控制。 在离散…

STM32—控制蜂鸣器(定时器)

目录 1 、 电路构成及原理图 2 、编写实现代码 main.c tim_irq.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 定时器中断是利用定时器的计数功能(向上计数或向下计…

算法---二分查找练习-3(山脉数组的顶峰索引)

山脉数组的顶峰索引 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 初始化两个指针 left 和 right&#xff0c;分别指向数组的起始位置和结束位置。 进入循环&#xff0c;循环条件为 left < right。 在每次循环中&…

Visual Studio - 添加快捷键图标

Visual Studio - 添加快捷键图标 1. Text Editor Toolbar Options -> Add or Remove Buttons -> Customize2. Toolbars3. Commands -> Debug4. Add Command...References 1. Text Editor Toolbar Options -> Add or Remove Buttons -> Customize 2. Toolbars B…

机器学习-05-特征工程

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中特征工程部分。 参考 机器学习之特征工程详解 特征工程&#xff08;Feature Engineering&#xff09; 特征工程是指使用专业的背景知识和技巧处理数据&#xff0c;使得特征能在机器学习算法上发生更好的…

Lvs+keepalived+nginx搭建高可用负载均衡集群

环境配置 master主机192.168.199.149&#xff0c;虚拟IP192.168.199.148 back备机192.168.199.150 真实服务器1 192.168.199.155 真实服务器2 192.168.199.156 关闭防火墙和selinux master配置&#xff08;149&#xff09; 添加虚拟IP ip addr add 192.168.199.148/24 …

手机备忘录隐藏功能:生日纪念日重要日子倒计时天数和提醒

在日常使用手机时&#xff0c;我们经常会用到备忘录、便签或笔记等记事工具来记录生活的点点滴滴&#xff0c;无论是购物清单、工作任务还是学习笔记。然而&#xff0c;你可能不知道&#xff0c;手机备忘录中其实隐藏着一些非常实用的功能&#xff0c;比如记录生日、纪念日、重…

Java设计模式 | 简单工厂模式

概述 需求 设计一个咖啡店点餐系统设计一个咖啡类&#xff08;Coffee&#xff09;&#xff1b;并定义其两个子类&#xff08;美式咖啡AmericanCoffee和拿铁咖啡LatteCoffee&#xff09;&#xff1b;再设计一个咖啡店类&#xff08;CoffeeStore&#xff09;&#xff0c;其具备…