写点什么

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:442000
用户头像

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

关注

评论

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

音视频的这些功能你知道吗?

anyRTC开发者

音视频 屏幕共享 智能降噪

不保护数据的代价!

鉴释

数据 数据安全

因聚而生 | 图扑受邀参加“生态融合,智创未来”大会

一只数据鲸鱼

数据可视化 数字孪生 智慧工业 智能制造

互操作性和去信任化的两难困境,到底需要治标还是治本?

CECBC

新时代程序员都用什么写代码?

程序员鱼皮

Java Python 大前端 Web 开发工具

阿里内部最新出炉“SpringCloudAlibaba笔记”号称微服务界的里程碑!

Java 编程 架构 微服务 计算机

深度分享|金融行业模型管理效能提升的规划与思考

索信达控股

大数据 金融科技 金融 风险管理 营销管理

JAVA语言异步非阻塞设计模式(应用篇)

有道技术团队

后端 网易有道

架构实战营模块2课后作业

hello

架构实战营

字节大牛的1850页Leetcode刷题笔记外泄!用实力折服众人

进击的王小二

Java 面试 算法 LeetCode

回帖送大奖 『和AI在一起』

百度大脑

人工智能 活动 大奖

关于单元测试的那些事儿,Mockito 都能帮你解决

华为云开发者联盟

测试 Mockito Mock Java 开发 模拟测试框架

网络攻防学习笔记 Day82

穿过生命散发芬芳

网络攻防 7月日更

数字经济时代下,区块链如何助力数字产业发展?

旺链科技

区块链 分布式存储 数字经济

赖建新:关于静态代码分析的问与答

鉴释

静态代码分析

阿里集团业务驱动的升级 —— 聊一聊Dubbo 3.0 的演进思路

阿里巴巴中间件

云计算 阿里云 云原生 dubbo 中间件

从京东零售云走出来的3D数字人正在触动未来的互动世界

Go语言:参数传递中,值、引用及指针之间的区别

微客鸟窝

Go 语言

支持60+数据传输链路,华为云DRS链路商用大盘点

华为云开发者联盟

华为云 DRS

漏洞非小事,金融服务机构如何对抗代码缺陷?

鉴释

金融科技 代码安全检测

鉴释陈新中:源代码安全在物联网时代的重要性

鉴释

物联网 源代码

为什么“内存管理”漏洞值得你的绝对关注!

鉴释

代码审查 内存 代码

PancakeSwap交易所市值管理机器人开发

Geek_23f0c3

市值管理机器人开发 PancakeSwap交易所 交易所机器人

iOS面试·一个iOS程序员的BAT面试全记录(内含百度+网易+阿里面试真题)

iOSer

ios 面试 iOS 知识体系

耗时半年,堪称奇迹!阿里架构师整合出258W字Java全栈面试题

钟奕礼

Java 程序员 架构 面试 计算机

从零开始学习3D可视化之数据对接(2)

ThingJS数字孪生引擎

大前端 数据 可视化 数字孪生

真的强!来自扫地僧总结的39W字上千道Java一线大厂面试题手册,成功助我拿下蚂蚁金服offer!

钟奕礼

Java 编程 程序员 架构 面试

Camtasia入门技巧之视频剪辑

淋雨

视频剪辑 Camtasia 录屏软件

华为云MVP程云:知识化转型,最终要赋能一线

华为云开发者联盟

人工智能 自然语言处理 机器学习 华为云 智能问答机器人

ES本地debug详解

泽睿

ES 搜索引擎;

给需要关心安全的技术人员的一些建议

鉴释

网络安全 安全

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