Spark 1.6.x的新特性
Spark-1.6是Spark-2.0以前的最后一个版本。主要是三个大方面的改进:性能提高,新的 Dataset API 和数据科学功能的扩展。这是社区开发很是重要的一个里程碑。
1. 性能提高
根据 Apache Spark 官方 2015 年 Spark Survey,有 91% 的用户想要提高 Spark 的性能。
Parquet 性能
自动化内存管理
流状态管理速度提高 10Xjava
2. Dataset API
Spark 团队引入了 DataFrames,新型Dataset API。python
3. 新的科学计算功能
机器学习管道持久性
新的算法和功能:
univariate and bivariate statistics
survival analysis
normal equation for least squares
bisecting K-Means clustering
online hypothesis testing
Latent Dirichlet Allocation (LDA) in ML Pipelines
R-like statistics for GLMs
feature interactions in R formula
instance weights for GLMs
univariate and bivariate statistics in DataFrames
LIBSVM data source
non-standard JSON data算法
Spark 1.5.x的新特性
一、DataFrame底层执行的性能优化(钨丝计划第一阶段)
1.1 Spark本身来管理内存,而再也不依靠JVM管理内容。这样就能够避免JVM GC的性能开销,而且可以控制OOM的问题。
1.2 Java对象直接使用内部的二进制格式存储和计算,省去了序列化和反序列化的性能开销,并且更加节省内存开销。
1.3 完善了Shuffle阶段的UnsafeShuffleManager,增长了很多新功能,优化shuffle性能。
1.4 默认使用code-gen,使用cache-aware算法,增强了join、aggregation、shuffle、sorting的性能,加强了window function的性能,性能比1.4.x版本提升数倍shell
二、DataFrame
2.1 实现了新的聚合函数接口,AggregateFunction2,而且提供了7个新的内置聚合函数。
2.2 实现了100多个新的expression function,例如unix_timestamp等,加强了对NaN的处理
2.3 支持链接不一样版本的hive metastore
2.4 支持Parquet 1.7express
三、Spark Streaming:更完善的python支持、非实验的Kafka Direct API等等。缓存
Spark 1.4.x的新特性
通过4个RC版本,Spark 1.4最终仍是赶在Spark Summit前发布了,本文简单谈下本版本中那些很是重要的新feature和improvement.
SparkR就不细说了,于data scientists而言,简直是望眼欲穿,千呼万唤始出来........ 这显然要用单独一篇文章来讲下 : )性能优化
Spark Core:
如今你们最关心什么?性能和运维呀! 什么最影响性能?必须shuffle呀!什么是运维第一要务?必须是监控呀(就先不扯alert了)!1.4在这两点都作足了功夫。 1.4中,Spark为应用提供了REST API来获取各类信息(jobs / stages / tasks / storage info),使用这个API搭建个本身的监控简直是分分钟的事情,不止于此,DAG如今也能可视化了,不清楚Spark的DAGScheduler怎么运做的同窗,如今也能很是轻易地知道DAG细节了。再来讲说shuffle, 你们都知道,从1.2开始sort-based shuffle已经成为默认的shuffe策略了,基于sort的shuffle不须要同时打开不少文件,而且也能减小中间文件的生成,可是带来的问题是在JVM的heap中留了大量的java对象,1.4开始,shuffle的map阶段的输出会被序列化,这会带来两个好处:一、spill到磁盘上的文件变小了 二、GC效率大增 ,有人又会说,序列化反序列化会产生额外的cpu开销啊,事实上,shuffle过程每每都是IO密集型的操做,带来的这点cpu开销,是能够接受。
你们期待的钨丝计划(Project Tungsten)也在1.4初露锋芒,引入了新的shuffle manager “UnsafeShuffleManager”, 来提供缓存友好的排序算法,及其它一些改进,目的是下降shuffle过程当中的内存使用量,而且加速排序过程。 钨丝计划一定会成为接下来两个版本(1.5,1.6)重点关注的地方。运维
Spark Streaming:
Streaming在这个版本中增长了新的UI, 简直是Streaming用户的福音啊,各类详细信息一览无余。话说Spark中国峰会,TD当时坐我旁边review这部分的code,悄悄对说我”this is awesome”。对了,这部分主要是由朱诗雄作的,虽然诗雄在峰会上放了我鸽子,但必须感谢他给咱们带来了这么好的特性!另外此版本也支持了0.8.2.x的Kafka版本。机器学习
Spark SQL(DataFrame)
支持老牌的ORCFile了,虽然比Parquet年轻,可是人家bug少啊 : ) 1.4提供了相似于Hive中的window function,仍是比较实用的。本次对于join的优化仍是比较给力的,特别是针对那种比较大的join,你们能够体会下。JDBC Server的用户确定很是开心了,由于终于有UI能够看了呀。函数
Spark ML/MLlib
ML pipelines从alpha毕业了,你们对于ML pipelines的热情还真的蛮高的啊。我对Personalized PageRank with GraphX却是蛮感兴趣的,与之相关的是recommendAll in matrix factorization model。 事实上大多数公司仍是会在Spark上实现本身的算法。
Spark 1.3新特性
Spark SQL脱离Alpha版本
在1.3版本中,Spark SQL正式脱离Alpha版本,提供了更好的SQL标准兼容。同时,Spark SQL数据源API亦实现了与新组件DataFrame的交互,容许用户直接经过Hive表格、Parquet文件以及一些其余数据源生成DataFrame。用户能够在同一个数据集上混合使用SQL和data frame操做符。新版本提供了从JDBC读写表格的能力,能够更原生地支持Postgres、MySQL及其余RDBMS系统。同时,该API还为JDBC(或者其余方式)链接的数据源生成输出表格提供写入支持。
内置支持Spark Packages
在2014年末,咱们着手为Spark创建一个新的社区项目目录站点——Spark Packages。当下,Spark Packages已经包含了开发者可使用的45个社区项目,包括数据源集成、测试工具以及教程。为了更方便Spark用户使用,在Spark 1.3中,用户能够直接将已发布包导入Spark shell(或者拥有独立flag的程序中)。
Spark Packages 还为开发者创建了一个SBT插件来简化包的发布,并为发布包提供了自动地兼容性检查。
在Spark Streaming中提供了更低等级的Kafka支持
从过去发布的几个版原本看,Kafka已经成为Spark Streaming一个很是人气的输入源。Spark 1.3引入了一个新的Kakfa streaming source,它利用了Kafka的回放能力,在非预写日志配置下提供了一个更可靠的交付语义。同时,针对那些需求强一致性的应用程序,它还提供了实现了Exactly-Once Guarantees的原语。在Kafka的支持上,1.3版本还添加了一个Python API以及支持这个API的原语。
MLlib中的新算法Spark 1.3还提供了大量的新算法。其中,Latent Dirichlet Allocation(LDA)成为了第一个出如今MLlib中的主题建模算法。在这以前,Spark的逻辑回归已经经过多元逻辑回归(multinomial logistic regression )支持多类分类(multiclass classification)。而在这个版本中,聚类再次被提高,Gaussian Mixture Models和 Power Iteration Clustering被引入。并经过FP-growth扩展了频繁项集挖掘(FIM,Frequent Itemsets Mining)。最后,MLlib还为Distributed Linear Algebra引入了有效的块矩阵抽象。