博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器
阅读量:6094 次
发布时间:2019-06-20

本文共 2682 字,大约阅读时间需要 8 分钟。

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的一部分。

\"image\"

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是一项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(从现在开始称为)。此外,它还提供了:

  • 新的函数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。现在加载图像非常简单:

\"image\"

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。

\"image\"

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

\"image\"

英文原文:

转载地址:http://iiwza.baihongyu.com/

你可能感兴趣的文章
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
Check failed: error == cudaSuccess (7 vs. 0) too many resources requested for launch
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html
查看>>
hadoop(6)---mapred-site.xml 详解以及常用配置。
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
codeforce 599B Spongebob and Joke
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>