云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

消息队列_淄博高端网站建设_测评

小七 141 0

介绍Apache Spark 2.4

更新日期:2018年11月19日我们很高兴地宣布,作为Databricks运行时5.0的一部分,apachespark2.4可以在Databricks上使用。我们要感谢apachespark社区为spark2.4发行版所做的宝贵贡献。Spark 2.4的目标是使Spark更快、更简单、更智能,它通过以下特性扩展其范围:支持屏障模式的调度器,以便更好地与基于MPI的程序集成,例如分布式深度学习框架引入许多内置的高阶函数,使其更容易处理复杂的数据类型(即数组和映射)为scala2.12提供实验支持允许快速评估笔记本中的数据帧,以便于调试和故障排除。介绍一种新的内置Avro数据源除了这些新特性之外,该版本还关注可用性、稳定性和改进,解决了1000多个问题。Spark贡献者的其他显著特征包括:消除2GB块大小限制[SPARK-24296,SPARK-24307]熊猫UDF改进[SPARK-22274,SPARK-22239,SPARK-24624]图像模式数据源[SPARK-22666]Spark SQL增强功能[Spark-23803、Spark-4502、Spark-24035、Spark-24596、Spark-19355]内置文件源代码改进[SPARK-23456、SPARK-24576、SPARK-25419、SPARK-23972、SPARK-19018、SPARK-24244]Kubernetes集成增强[SPARK-23984,SPARK-23146]在这篇博文中,我们简要总结了一些更高级的特性和改进,在接下来的几天里,我们将针对这些特性发布深入的博客。有关所有Spark组件和已解决的JIRA的主要功能的全面列表,请阅读ApacheSpark2.4.0发行说明。屏障执行模式Barrier execution mode是ProjectHydrogen的一部分,它是ApacheSpark的一项计划,旨在将最先进的大数据和人工智能结合在一起。它能够正确地嵌入来自AI框架的分布式训练作业作为Spark作业。他们通常会探索复杂的通信模式,比如所有Reduce,因此所有任务都需要同时运行。这不符合Spark当前使用的MapReduce模式。使用这种新的执行模式,Spark会同时启动所有训练任务(例如MPI任务),并在任务失败时重新启动所有任务。Spark还为barrier任务引入了一种新的容错机制。当任何屏障任务在中间失败时,Spark会中止所有任务并重新启动阶段。内置高阶函数在Spark 2.4之前,对于直接操作复杂类型(如数组类型),有两种典型的解决方案:1)将嵌套结构分解成单独的行,并应用一些函数,然后重新创建结构。2) 构建用户定义函数(UDF)。新的内置函数可以直接操作复杂类型,而高阶函数可以随意使用匿名lambda函数来操作复杂值,类似于udf,但性能要好得多。你可以看看这本笔记本中一些高阶函数和内置函数的代码示例,或者阅读我们关于高阶函数的博客。内置Avro数据源apacheavro是一种流行的数据序列化格式。它广泛应用于apachespark和apachehadoop生态系统,尤其是基于Kafka的数据管道。从apachespark2.4版本开始,Spark为读写Avro数据提供了内置支持。新的内置spark avro模块最初来自Databricks为apachespark开发的开源项目avro数据源(从现在起称为spark avro)。此外,它还提供:新函数从_avro()和to_avro()读取和写入数据帧中的avro数据,而不仅仅是文件。Avro逻辑类型支持,包括Decimal、Timestamp和Date类型。有关详细信息,请参阅相关的架构转换。读吞吐量提高2倍,写入吞吐量提高10%。您可以在我们的深入技术博客中了解更多有关内置Avro数据源的信息。实验性Scala 2.12支持从Spark 2.4开始,Spark支持Scala 2.12,并与Scala 2.11和2.12交叉构建,这两个版本在Maven存储库和下载页面中都可用。现在用户可以使用scala2.12编写Spark应用程序,方法是选择scala2.12spark依赖项。scala2.12提供了与java8更好的互操作性,java8提供了lambda函数的改进序列化。它还包括用户希望的新特性和错误修复。熊猫UDF改良熊猫UDF是在Spark 2.3.0中引入的。在这个版本中,我们收集了用户的反馈,并不断改进Pandas UDF。除了bug修复,spark2.4还有两个新特性:Spark-22239用户定义的Pandas UDF窗口函数。SPARK-22274用户定义的聚合函数与pandas udf。我们相信这些新功能将进一步提高熊猫UDF的采用率,我们将在下一个版本中继续改进Pandas UDF。图像数据源社区看到更多关于图像/视频/音频处理的用例。提供Spark内置的数据源可以简化用户将数据输入ML培训的工作。在Spark 2.3版本中,图像数据源通过ImageSchema.readImages. SPARK 2.4版本中的SPARK-22666引入了一个新的SPARK数据源,它可以作为数据帧从目录递归地加载图像文件。现在,加载图像非常简单:df=spark.read.format("图像")。加载("…")您可以在我们的深入技术博客中了解更多关于内置图像数据源的信息。Kubernetes集成增强spark2.4为Kubernetes集成提供了许多增强。我们提到三个亮点。在这个版本上运行的容器化的BerneteKu和应用程序支持。Spark提供了Python和R绑定的Dockerfiles,供用户构建一个基本映像,或者定制它来构建一个自定义映像。第二,提供客户端模式。用户可以在Kubernetes集群中运行的pod或集群外的客户机上运行交互式工具(例如shell或笔记本)。最后,支持挂载以下类型的Kubernetes卷:emptyDir、hostPath和persistentVolumeClaim。有关详细信息,请参阅技术博客。灵活的流媒体接收器许多外部存储系统已经具有批处理连接器,但并不是所有的系统都有流式接收器。在此版本中,即使存储系统不支持流式传输作为接收器,流式处理df.writeStream.foreachBatch(…)允许您在每个微批次的输出上使用批处理数据写入程序。例如,可以使用foreachBatch中现有的apachecassandra连接器直接将流查询的输出写入Cassandra。精简数据流.foreachBatch{(batchDF:DataFrame,batchId:Long)=>批处理df.write//使用Cassandra批处理数据源写入流输出.cassandraFormat(表名,键空间).option("cluster",clusterName).mode("append").save()}类似地,您还可以使用它将流式数据帧不支持的许多数据帧/数据集操作应用于每个微批处理输出。例如,foreachBatch可用于避免在写入多个位置时重新计算流式查询。例如,流式处理df.writeStream.foreachBatch{(batchDF:DataFrame,batchId:Long)=>批处理df.perist()批处理df.write.format(…).save(…)//位置1批处理df.write.format(…).save(…)//位置2批处理df.unpersist()}下一步是什么再次感谢Spark社区的所有贡献!虽然这篇博文只是总结了这个版本中的一些显著特性,但是您可以阅读官方发行说明来查看完整的更改列表。敬请关注,我们将发布技术博客,对这些功能进行更深入的解释。如果您想在Databricks Runtime 5.0中试用ApacheSpark2.4,请在此处注册一个免费试用帐户。免费试用Databricks。今天就开始吧