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
Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器相关推荐
- 深度学习框架集成平台C++ Guide指南
深度学习框架集成平台C++ Guide指南 这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型. 提示 所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括Te ...
- 35 万行代码,旷视重磅开源天元深度学习框架 ,四大特性实现简单开发
[导读]2020 年 3 月 25 日,人工智能企业旷视科技举办线上发布会,旷视联合创始人兼 CTO 唐文斌宣布正式开源其 AI 生产力平台 Brain++ 的核心组件--天元(MegEngine). ...
- 就在刚刚,百度重磅发布《深度学习中文教程实战版》,对外免费开发!
很多小伙伴在后台给我留言,深度学习对零基础技术小白太不友好了-确实,晦涩的理论.冗长的代码.复杂的调试.鱼龙混杂的资料...搞懵了不少同学- 有办法吗?个人认为还是有的,比如大可不必一上手就选择难啃的 ...
- 重磅!Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能
点击我爱计算机视觉标星,更快获取CVML新技术 昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习 ...
- 【华为云技术分享】Spark如何与深度学习框架协作,处理非结构化数据
随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...
- Uber发布史上最简单的深度学习框架Ludwig!
昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习框架! Ludwig是一个建立在TensorFl ...
- Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能
昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习框架! image Ludwig是一个建立在Te ...
- DL-5 深度学习框架的对比
在深度学习领域的五大巨头里,它们都各自力挺一种深度学习框架:像谷歌有自家的TensorFlow.Facebook有Torch.百度有Paddle Paddle.微软有CNTK.而亚马逊的AWS则有MX ...
- 主流深度学习框架对比
深度学习研究的热潮持续高涨,各种开源深度学习框架也层出不穷,其中包括TensorFlow.Caffe.Keras.CNTK.Torch7.MXNet.Leaf.Theano.DeepLearning4 ...
最新文章
- 机器学习(MACHINE LEARNING)MATLAB求解状态转移矩阵
- 宝塔php安装那个合_通过宝塔面板一键搭建wordpress博客
- hashset默认长度是多少?_看看,这些细节上的坑,你犯了多少?
- 计算机科学必读书籍_5篇关于数据科学家的产品分类必读文章
- java中的排序方法,Java中的排序比较方式:自然排序和比较器排序
- 飞秋下载2010正式版_飞秋下载
- python樱花树代码_【推荐】手把手教你如何用Python画一棵漂亮樱花树含源码
- citrix 产品上线
- 魔幻的2020年,请程序员们收下这份秋招建议!
- [android]netd与NetworkManagementService初印象
- 悲剧!IDEA 突然找不到类了?
- CSDN:LaTex数学公式编辑基础
- excel生成随机手机号
- java 小技巧_成为JAVA高手的25个小窍门
- html移动端适配最优方法
- php四舍六入五成双算法
- Python--模块和包
- 【学习笔记】状态转移矩阵
- parallels desktop 18 虚拟机下载和Win11下载
- 如果给定世界价格是1单位计算机交换22,可以帮帮我吗?我有几个题目不会做,有劳各位了。...
热门文章
- kali 改root_Kali Linux 将默认以非 root 身份运行
- android屏幕分享软件,ScreenStream(屏幕分享)
- 计算机桌面文件夹删除如何找回,电脑删除文件如何恢复 误操作的一剂后悔药...
- STM32 中malloc实际调用
- 关于常见的底层驱动源码资料
- oracle主目录自动检测,ORACLE ADDM数据库自动诊断测试
- Java实用教程笔记 Java入门
- win10+python3.6+tensorflow-cpu+keras+Pycharm环境下的tensorflow配置方法
- ExecutorService shutdown()和shutdownNow()方法区别
- RabbitMQ的应用场景以及基本原理介绍