NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Spark 2.4 重磅发布:优化深度学习框架集成,提供更灵活的流式接收器

  • 2018-11-10
  • 本文字数:2280 字

    阅读完需:约 7 分钟

Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器

Apache Spark 2.4.0 是 2.x 系列中的第五个版本。此版本增加了屏障执行模式,以便更好地与深度学习框架集成;引入 30 多个更高阶的内置函数,能够更轻松地处理复杂数据类型;优化 K8s 集成,同时提供 Scala 2.12 实验性支持。其他主要更新还包括内置 Avro 数据源、图像数据源,更加灵活的流式接收器,取消传输过程中 2GB 块大小的限制,Pandas UDF 改进。此外,此版本继续关注可用性、稳定性,并解决了大约 1100 个 tickets。


Databricks 正式发布 Apache Spark 2.4,作为 Databricks Runtime 5.0 的一部分。



Release Note 详情传送门


Spark 2.4 继续以更快、更简单、更智能为目标,带来了以下新特性:


  • 一种支持屏障模式的调度器,以便与基于 MPI 的程序(比如分布式深度学习框架)更好地集成;

  • 引入一些内置的高阶函数,让处理复杂的数据类型(即数组和 map)变得更容易;

  • 提供对 Scala 2.12 的实验性支持;

  • 允许对 notebook 中的 DataFrame 进行及早求值,便于调试和排除故障;

  • 引入新的 Avro 数据源。


除了这些新特性外,新版本把重点放在可用性、稳定性和优化上,解决了 1000 个问题。由 Spark 贡献者带来的其他特性还包括:


  • 去掉了 2 GB 块大小限制;

  • Pandas UDF 改进;

  • 图像模式数据源;

  • Spark SQL 增强功能;

  • 内置文件源改进;

  • Kubernetes 集成增强。


接下来将简要介绍一些高级别的特性和改进,在未来几天,Databrick 将发布有关这些特性的深度介绍。有关所有 Spark 组件和 JIRA 已解决的主要特性的完整列表,请参阅 Apache Spark 2.4.0发行说明

屏障执行模式

屏障执行模式是Hydrogen的一部分,Hydrogen 是一项 Apache Spark 计划,旨在将最先进的大数据和 AI 技术结合在一起。它可以将来自 AI 框架的分布式训练作业嵌入到 Spark 作业中。他们通常需要探索像 All-Reduce 这种复杂的通信模式,因此需要同时运行所有任务。Spark 当前使用的 MapReduce 模式不满足这样的需求。在这种新的执行模式下,Spark 启动所有训练任务(例如 MPI 任务),并在任务失败时重新启动所有任务。Spark 还为屏障任务引入了一种新的容错机制。在执行过程中如果有任何屏障任务失败,Spark 将中止所有任务并重新启动该执行阶段。

内置高阶函数

在 Spark 2.4 之前,有两种典型的解决方案用于直接操作复杂类型(例如数组类型):一个是将嵌套结构展开为单独的行,应用一些函数,然后再次创建原先的结构,一个是使用用户定义函数(UDF)。新的内置函数可以直接操作复杂类型,可以使用匿名 lambda 函数操作复杂的值,类似于 UDF,但具有更好的性能。


你可以查看一些有关高阶和内置函数的示例

内置 Avro 数据源

Apache Avro 是一种非常流行的数据序列化格式,被广泛用在 Apache Spark 和 Apache Hadoop 生态系统中,尤其适用于基于 Kafka 的数据管道。从 Apache Spark 2.4 开始,Spark 为 Avro 数据的读写提供内置支持。新的内置 spark-avro 模块最初来自 Databricks 的开源项目 Avro Data Source for Apache Spark(从现在开始称为spark-avro)。此外,它还提供了:


  • 新的函数 from_avro()和 to_avro(),用于在 DataFrame 中读写 Avro 数据,而不仅仅是文件;

  • Avro 逻辑类型支持,包括 Decimal、Timestamp 和 Date 类型;

  • 2 倍的读取吞吐量提升和 10%的写入吞吐量改进。

Scala 2.12 实验性支持

从 Spark 2.4 开始,Spark 将支持 Scala 2.12,并使用 Scala 2.11 和 2.12 进行交叉构建,这两个版本都可以在 Maven 存储库和下载页面中找到。现在,用户可以使用 Scala 2.12 来编写 Spark 应用程序。


Scala 2.12 带来了与 Java 8 更好的互操作性,Java 8 提供了更好的 lambda 函数序列化。它还带来了一些用户期待的新特性和错误修复。

Pandas UDF 改进

Pandas UDF 最初是在 Spark 2.3.0 中引入的。在新版本中,根据用户反馈不断改进 Pandas UDF。


除了错误修复之外,Spark 2.4 还带来了 2 个新特性:基于 Pandas UDF 定义窗口函数和聚合函数。这些新特性将进一步改善 Pandas UDF 的使用,并在下一版本中继续改进 Pandas UDF。

图像数据源

社区看到越来越多图像/视频/音频处理方面的使用场景。在 Spark 中为这些场景提供内置数据源简化了用户将数据导入 ML 训练方面的工作。在 Spark 2.3 版本中,图像数据源是通过 ImageSchema.readImages 实现的。Spark 2.4 引入了一个新的 Spark 数据源,可以将目录中的图像文件递归加载为 DataFrame。现在加载图像非常简单:


Kubernetes 集成增强

Spark 2.4 带来了很多与 Kubernetes 集成的增强特性。首先,新版本支持在 Kubernetes 上运行容器化的 PySpark 和 SparkR 应用程序。Spark 为用户提供了 Python 和 R 语言的 Dockerfiles 文件,供用户构建基础镜像或自定义镜像。其次,提供了客户端模式。用户可以在运行在 Kubernetes 集群中 pod 上或集群外的客户端计算机上运行交互式工具(例如 shell 或 notebook)。最后,支持挂载以下类型的 Kubernetes 卷:emptyDir、hostPath 和 persistentVolumeClaim。

灵活的流式接收器

很多外部存储系统已经提供了批次连接器,但并非所有外部存储系统都有流式接收器(sink)。在新版本中,即使存储系统不支持流式接收器,仍然可以通过 streamingDF.writeStream.foreachBatch(…)在每个微批次输出上使用批次数据写入器。例如,你可以在 foreachBatch 中使用现有的 Apache Cassandra 连接器直接将流式查询的输出写入 Cassandra。



同样,你也可以用它将很多流式 DataFrame 不支持的 DataFrame/Dataset 操作应用在每个微批次输出上。例如,foreachBatch 可用于避免在写入多个位置时重新计算流式查询。



英文原文:


https://databricks.com/blog/2018/11/08/introducing-apache-spark-2-4.html


2018-11-10 14:441886
用户头像

发布了 731 篇内容, 共 434.1 次阅读, 收获喜欢 1997 次。

关注

评论

发布
暂无评论
发现更多内容

Golang中利用BPF进行动态追踪

MatrixOrigin

Go 数据库 云原生 MatrixOrigin MatrixOne

积分盲盒商城系统开发方案(成熟定制技术)

I8O28578624

如何用 7 分钟击破 Serverless 落地难点?

Serverless Devs

EasyRecovery2023不要钱的硬盘数据恢复工具

茶色酒

EasyRecovery EasyRecovery15 easyrecovery2023

底层逻辑-理解Go语言的本质

面向加薪学习

golang go语言 源代码 golang 面试 Go源代码

理解DALL·E 2, Stable Diffusion和 Midjourney的工作原理

Baihai IDP

人工智能 AI 工具 AIGC 文转图

MetaTown:一个可以自己构建数字资产的平台

华为云开发者联盟

区块链 华为云 12 月 PK 榜 数字资产平台

华为云低代码技术:让矿区管理“智变”,一览无遗

华为云开发者联盟

云计算 低代码 华为云 12 月 PK 榜

中国敏捷十年实践者分享:敏捷教练的自我修为

华为云开发者联盟

云计算 华为云 12 月 PK 榜

鸿蒙开发实例 | 可复用列表项的ListContainer

TiAmo

华为 华为云 12月月更

CorelDRAW2023中文版专业矢量软件更新介绍

茶色酒

CorelDRAW 2022 CorelDraw2023 CorelDraw

DTALK直播预约 | 12月8日开播:后疫情时代,制造企业如何实现数字化转型?

袋鼠云数栈

数字化转型

DQMIS 2022第六届数据质量管理国际峰会议程新鲜出炉

数据质量管理智库

大数据 数据 数据治理 数据安全 隐私计算

AWS CEO Adam Selipsky 演讲 Keynote @ re:Levent2022

B Impact

工作中常用的设计模式--策略模式

lpe234

Java 后端 设计模式 策略模式 spring-boot

AngularJS进阶(二十五)requirejs + angular + angular-route 浅谈HTML5单页面架构

No Silver Bullet

AngularJS 12月月更 requirejs angular-route

会议报道 | 第二届百家医院单细胞中心联盟年度峰会圆满落幕

联营汇聚

浅谈 Apache Flume 数据接入的实现原理以及问题分析处理方式

移动云大数据

flume

2023最新版EasyRecovery软件下载安装教程

茶色酒

EasyRecovery EasyRecovery15 easyrecovery2023

MMM互助系统开发智能合约部署

薇電13242772558

dapp

4.0体验站|OceanBase 4.0,从分布式到单机,从单机到分布式

OceanBase 数据库

数据库 oceanbase

AngularJS进阶(二十二)实现时间选择插件

No Silver Bullet

AngularJS 12月月更 AngularJS时间插件

LED透明屏在夜晚经济有怎样的发展机遇

Dylan

LED LED显示屏

火山引擎DataTester:一个爆款游戏产品,是如何用A/B测试打磨出来的?

字节跳动数据平台

大数据 游戏 AB testing实战 12 月 PK 榜

源码解析:Dubbo3 的 Spring 适配原理与初始化流程

Apache Dubbo

Java 开源 微服务 dubbo

携程商旅CEO张勇:TMC不止一站式解决方案 携程商旅推出“产品云图”

携程商旅

TDengine3.0:解决高基数问题的时序数据库设计思路

TDengine

数据库 tdengine 时序数据库

AngularJS进阶(二十四)AngularJS与单选框及多选框的双向动态绑定

No Silver Bullet

AngularJS 12月月更 单选 多选

Meta Force佛萨奇2.0元宇宙项目系统开发技术讲解方案

I8O28578624

喜讯!YMatrix 当选新能源汽车国家大数据联盟理事单位

YMatrix 超融合数据库

数据库 新能源汽车 新能源 超融合数据库 YMatrix

4.如何做好架构设计

程序员小张

「架构实战营」

Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器_开源_Databricks 博客_InfoQ精选文章