BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Spark 1.6发布:引入Dataset接口

| 作者 侠天 关注 5 他的粉丝 发布于 2016年1月6日. 估计阅读时间: 6 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

今天,Databricks宣布发布Apache Spark 1.6! 这也是开源社区开发的一个里程碑,2015年代码贡献者达到1000人,是2014一整年的两倍,见下图。

接下来揭开Spark 1.6新发布的功能。

Spark 1.6包含了超过1000个patches,在这里主要展示三个方面的主题:新的Dataset API,性能提升(读取Parquet 50%的性能提升,自动内存管理,streaming state management十倍的性能提升),以及大量新的机器学习和统计分析算法。

性能提升

根据2015年Spark官方调研发现,91%的用户觉得性能提升是Spark最重要的方面。因此,性能优化是Spark开发一直的关注点。

读取Parquet性能提升:Parquet是在Spark使用中最常用的数据格式。Parquet读取性能对海里数据应用有着极其重大的影响。在过去,Spark中读取Parquet依赖于Parquet的(parquert-mr)MR来读取并解析Parquet文件。当我们优化Spark程序时,你会发现太多的时间消耗在从Parquet列解析成记录集的过程中。而在Spark 1.6中Databricks采用一种新型的Parquet reader读取器,它可以避开”parquert-mr”式的记录集解析,并使用更加优化的字节码路径来解析Parquet的schemas。在基准测试中可以发现,新型的Parquet reader读取器读取Parquet文件有 50%的性能提升(从2.9 million/秒提升到4.5million/秒)。

自动内存管理:Spark 1.6另外一个性能提升是在内存管理方面。在Spark 1.6之前,Spark静态地把内存划分成两部分:execution memory 和 cache memory。Execution memory主要用来做sort,hash和shuff。Cache memory是用来缓存热点数据的。Spark 1.6引进新的内存管理机制能自动调节这两种内存的区域,运行时自动增长,回收时根据执行的应用适时进行。

这意味着在无需用户干预的情况下使用join和aggregation操作时内存的自适应有大幅的提升。

对于读取Parquet和自动内存管理两种性能提升也不需要开发者更改老版本的代码。

streaming state management十倍的性能提升:State management是Spark Streaming应用开发里重要的功能,经常用来保存聚合信息或session信息。通过社区开发者的反馈,Databricks重新设计了state management API,并引入mapWithState API(可随updates的数目线性扩展)。这意味着能更有效的跟踪增量变化,而不是每次update都要对数据进行一次全scan。Databricks已经创建了一个notebook来展示怎么使用这个new feature,后面会发blog进一步对这个功能进行详细讲解。

Dataset API

在今年早些时候Spark引入DataFrame,它可以提供high-level functions让Spark更好的处理数据结构和计算。这让Catalyst optimizer 和Tungsten execution engine自动加速大数据分析。

发布DataFrame之后开发者收到了很多反馈,其中一个主要的是大家反映缺乏编译时类型安全。为了解决这个问题,Spark采用新的Dataset API (DataFrame API的类型扩展)。

Dataset API扩展DataFrame API支持静态类型和运行已经存在的Scala或Java语言的用户自定义函数。对比传统的RDD API,Dataset API提供更好的内存管理,特别是在长任务中有更好的性能提升,请参见blog

新的数据科学功能

机器学习管道持久化:现在许多机器学习的应用采用Spark的ML pipeline功能来构建机器学习pipelines。老版本中,如果想在外部存储pipeline,需要用户自己完成持久化代码部分。在Spark 1.6中已经提供了对应的function来存储和重新加载pipelines,并把先前的models应用到新的数据中。

大量新的机器学习和统计分析算法:

这次发布增加了以下算法:

· 无偏估计统计

· 生成分析

· 最小二乘法的归一化

· 二分k均值聚类算法

· 在线假设检验

· LDA算法

· 支持R语言的广义线性模型的统计

· 公式的交互

· 支持R语言的广义线性模型的权重

· LIBSVM数据源

· 支持非标准的JSON数据

感谢杜小芳对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者(已满),InfoQ读者交流群(#2)InfoQ好读者)。

 

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2015年贡献spark的代码是1000行 by l m

code contributosr! code contributors! code contributors!

Re: 2015年贡献spark的代码是1000行 by Fang Qiang

没有审核吧

全套Spark免费教学视频(完全免费!!!) by 许 菁

(1)《DT大数据梦工厂大数据spark蘑菇云Scala语言全集(持续更新中)》

www.tudou.com/plcover/rd3LTMjBpZA

(2)《Spark零基础视频:从零起步到调通第一个Wordcount》

www.tudou.com/plcover/IB9YwzdU8f0/

(3)《大数据Spark内核core源码解密》

www.tudou.com/plcover/JdpoUtqxmNs

(4)《大数据spark性能优化》

www.tudou.com/plcover/c74-UW2DP7o/

(5)《Spark SQL从零起步彻底精通彻底实战》

www.tudou.com/plcover/nhBqWLH2Asc/

(6)《Spark Streaming从零起步》

www.tudou.com/plcover/nRM-f151vp0/

(7)《大数据Spark电商广告点击综合案例》

www.youku.com/playlist_show/id_27881496.html

(8)《大数据Spark Streaming大型Spark项目性能优化》

www.tudou.com/plcover/nMC ... d=341542230_03_0_29

(9)《大数据Spark Streaming源码疯狂解密系列》

www.tudou.com/plcover/f0A ... d=341542230_03_0_29

(10)《Spark面试宝典(数据倾斜、性能调优等)》

www.tudou.com/plcover/yBrSt2Vz8G8/

(11)《Spark源码大师之路之源码解析与阅读全集》

www.tudou.com/plcover/hlFqt6k1xUc/

(12)《大数据JVM优化系列》

www.tudou.com/plcover/hzJp87qXtBA/

(13)《大数据Spark 机器学习系列》

www.tudou.com/plcover/zNefiPmqLW8/

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT