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

本文共 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://mwwzx.baihongyu.com/

你可能感兴趣的文章
GitBlit (1)-- 在linux 安装 GitBlit 并运行
查看>>
Windows与Linux之间的文件自动同步
查看>>
topcoder srm 714 div1
查看>>
20160215
查看>>
mxnet导入图像数据
查看>>
程序是如何执行的(一)a=a+1
查看>>
go : 结构
查看>>
【Python第五篇】Python面向对象(初级篇)
查看>>
innobackupex参数之 --throttle 限速这个值设置多少合理 原创
查看>>
18 已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果
查看>>
BZOJ - 3578: GTY的人类基因组计划2
查看>>
理解WebKit和Chromium(电子书)
查看>>
爱——无题
查看>>
分布式服务框架原来与实践 读书笔记一
查看>>
Aho-Corasick automation-KMP
查看>>
【http】post和get请求的区别
查看>>
/etc/profile
查看>>
TFS强制撤销某个工作区的文件签出记录
查看>>
编写who命令
查看>>
2.1 sikuli 中编程运行
查看>>