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重磅发布:优化深度学习框架集成,提供更灵活的流式接收器相关推荐

  1. 深度学习框架集成平台C++ Guide指南

    深度学习框架集成平台C++ Guide指南 这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型. 提示 所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括Te ...

  2. 35 万行代码,旷视重磅开源天元深度学习框架 ,四大特性实现简单开发

    [导读]2020 年 3 月 25 日,人工智能企业旷视科技举办线上发布会,旷视联合创始人兼 CTO 唐文斌宣布正式开源其 AI 生产力平台 Brain++ 的核心组件--天元(MegEngine). ...

  3. 就在刚刚,百度重磅发布《深度学习中文教程实战版》,对外免费开发!

    很多小伙伴在后台给我留言,深度学习对零基础技术小白太不友好了-确实,晦涩的理论.冗长的代码.复杂的调试.鱼龙混杂的资料...搞懵了不少同学- 有办法吗?个人认为还是有的,比如大可不必一上手就选择难啃的 ...

  4. 重磅!Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能

    点击我爱计算机视觉标星,更快获取CVML新技术 昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习 ...

  5. 【华为云技术分享】Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  6. Uber发布史上最简单的深度学习框架Ludwig!

    昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习框架! Ludwig是一个建立在TensorFl ...

  7. Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能

    昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习框架! image Ludwig是一个建立在Te ...

  8. DL-5 深度学习框架的对比

    在深度学习领域的五大巨头里,它们都各自力挺一种深度学习框架:像谷歌有自家的TensorFlow.Facebook有Torch.百度有Paddle Paddle.微软有CNTK.而亚马逊的AWS则有MX ...

  9. 主流深度学习框架对比

    深度学习研究的热潮持续高涨,各种开源深度学习框架也层出不穷,其中包括TensorFlow.Caffe.Keras.CNTK.Torch7.MXNet.Leaf.Theano.DeepLearning4 ...

最新文章

  1. 机器学习(MACHINE LEARNING)MATLAB求解状态转移矩阵
  2. 宝塔php安装那个合_通过宝塔面板一键搭建wordpress博客
  3. hashset默认长度是多少?_看看,这些细节上的坑,你犯了多少?
  4. 计算机科学必读书籍_5篇关于数据科学家的产品分类必读文章
  5. java中的排序方法,Java中的排序比较方式:自然排序和比较器排序
  6. 飞秋下载2010正式版_飞秋下载
  7. python樱花树代码_【推荐】手把手教你如何用Python画一棵漂亮樱花树含源码
  8. citrix 产品上线
  9. 魔幻的2020年,请程序员们收下这份秋招建议!
  10. [android]netd与NetworkManagementService初印象
  11. 悲剧!IDEA 突然找不到类了?
  12. CSDN:LaTex数学公式编辑基础
  13. excel生成随机手机号
  14. java 小技巧_成为JAVA高手的25个小窍门
  15. html移动端适配最优方法
  16. php四舍六入五成双算法
  17. Python--模块和包
  18. 【学习笔记】状态转移矩阵
  19. parallels desktop 18 虚拟机下载和Win11下载
  20. 如果给定世界价格是1单位计算机交换22,可以帮帮我吗?我有几个题目不会做,有劳各位了。...

热门文章

  1. kali 改root_Kali Linux 将默认以非 root 身份运行
  2. android屏幕分享软件,ScreenStream(屏幕分享)
  3. 计算机桌面文件夹删除如何找回,电脑删除文件如何恢复 误操作的一剂后悔药...
  4. STM32 中malloc实际调用
  5. 关于常见的底层驱动源码资料
  6. oracle主目录自动检测,ORACLE ADDM数据库自动诊断测试
  7. Java实用教程笔记 Java入门
  8. win10+python3.6+tensorflow-cpu+keras+Pycharm环境下的tensorflow配置方法
  9. ExecutorService shutdown()和shutdownNow()方法区别
  10. RabbitMQ的应用场景以及基本原理介绍