Spark1.2实际上是在12月份发布的。我有点惊讶。我一直以为要等到明年一月初才能发布。本次更新有172名开发人员参与,超过1000次提交。这是一个惊人的数字。这个版本为我们带来了很多新特性,同时也有很多性能优化点。再说几个比较重要的。SparkCore:1、在传输大量数据的情况下,通信管理器终于换成了基于netty的实现。之前的实现慢的要死,因为每次都要从磁盘读取到内核,再到用户态,再回到内核态进入网卡。现在它是用zerocopy实现的。(没想到,Kafka也用这个)。2.shufflemanager改为sortbased。当shuffle数据比较大的时候,性能会有所提升。但是很多人认为Hadoop的sort也是一样的,微博上也有人提出了这个观点。当我想回复解释的时候,却发现连城已经回复了。实际上Spark的sort目前只是根据Partitionkey进行排序,Partition内部目前并没有排序,但是即使需要内部排序,实现起来也是比较容易的。而Hadoop是根据每个Partition中的每个KV进行排序的。SparkStreaming:最后,它“声称”支持完全的H/A模式。以前,当驱动程序挂掉时,可能会丢失少量数据。现在加一层WAL(writeaheadlog),很多地方都会用到。还记得HBase的写入路径吗?每次写入memstore前,都会写入一个叫HLog的地方,防止数据丢失。回到这个问题,receiver每次接收到数据,都会存储在hdfs上,这样即使driver挂了,重启后依然可以继续处理。当然,WAL的实现还是一样的。重启驱动后,需要恢复数据,同时清理过期数据。当然,我还要提醒大家不可靠的接收者和可靠的接收者这两个东西。有兴趣就去看看是什么情况。MLlib:这里最显着的变化应该是Pipeline。很多从事机器学习的朋友肯定会感兴趣。MLlib的老大祥瑞在北京已经讲过了,这里就不展开了。需要指出的是,MLlib目前使用SchemaRDD来表示数据集。也就是说,SparkSQL和MLlib之间的通道已经打通了。顺便说一句,我们一起吃饭的时候,我拉着祥瑞聊了一些关于DataBricksCloud的事情。MLlib我没问,但我知道他是度假回来的,而且PR涨幅很大。GraphX:淘宝铭峰的团队是国内用的最多的。详情请咨询淘宝技术部,哈哈,开玩笑的。这个版本最值得注意的应该是稳定的api,这意味着你不用担心你现在写的代码会因为未来的API变化而改变。下周杭州的SparkMeetup会有精彩的GraphX主题。SparkSQL:之所以发这篇文章是因为SparkSQL太火了,所以如果你要提PR,要赶紧提,快响应,快合并,不然可能给不了你冲突短时间内。这个版本最重要的特点无疑应该属于外部数据源。套用连城PPT上的一句话,pushpredicatestodatasource,什么意思?从HBase中获取所有数据后,在Spark引擎中对其进行过滤。现在,你可以把这个步骤推到DataSource端,这样你就可以在取数据的时候进行过滤。当然,这方面肯定会有大的变化。还有一点必须指出的是,我已经在很多场合提醒过大家,SparkSQL中的缓存表一定要使用cacheTable("tableName")的形式,否则你将无法享受到列式存储带来的一系列好处,但是很多朋友还是用rdd.cache原来的方法做缓存,社区也意识到这是不可能的,所以现在不管是cacheTable还是直接cache,表达的语义是一样的,都可以享受到列式存储的好处.写到这里就这些了,这个版本变化很大,希望大家尽快升级。原文链接:http://mp.weixin.qq.com/s?__biz=MjM5NTc2MTg3Mw==&mid=201641685&idx=1&sn=1b75be3d774bb3f26b6714674dbefc64&scene=2&from=timeline&isappinstalled=0#rd