一、Spark Core&Spark SQL API
1、dataframe与dataset统一,dataframe只是dataset[Row]的类型别名
2、SparkSession:统一SQLContext和HiveContext,新的上下文入口
3、为SparkSession开发的一种新的流式调用的configuration api
4、accumulator功能增强:便捷api、web ui支持、性能更高
5、dataset的增强聚合api
二、Spark Core&Spark SQL SQL
1、支持sql 2003标准
2、支持ansi-sql和hive ql的sql parser
3、支持ddl命令
4、支持子查询:in/not in、exists/not exists
三、Spark Core&Spark SQL new feature
1、支持csv文件
2、支持缓存和程序运行的堆外内存管理
3、支持hive风格的bucket表
4、支持近似概要统计,包括近似分位数、布隆过滤器、最小略图
四、Spark Core&Spark SQL 性能
1、通过whole-stage code generation技术将spark sql和dataset的性能提升2~10倍
2、通过vectorization技术提升parquet文件的扫描吞吐量
3、提升orc文件的读写性能
4、提升catalyst查询优化器的性能
5、通过native实现方式提升窗口函数的性能
6、对某些数据源进行自动文件合并
五、Spark MLlib
1、spark mllib未来将主要基于dataset api来实现,基于rdd的api转为维护阶段
2、基于dataframe的api,支持持久化保存和加载模型和pipeline
3、基于dataframe的api,支持更多算法,包括二分kmeans、高斯混合、maxabsscaler等
4、spark R支持mllib算法,包括线性回归、朴素贝叶斯、kmeans、多元回归等
5、pyspark支持更多mllib算法,包括LDA、高斯混合、泛化线性回顾等
6、基于dataframe的api,向量和矩阵使用性能更高的序列化机制
六、Spark Streaming
1、发布测试版的structured streaming
*基于spark sql和catalyst引擎构建
*支持使用dataframe风格的api进行流式计算操作
*catalyst引擎能够对执行计划进行优化
2、基于dstream的api支持kafka 0.10版本
七、依赖管理、打包和操作
1、不再需要在生产环境部署时打包fat jar,可以使用provided风格
2、完全移除了对akka的依赖
3、mesos粗粒度模式下,支持启动多个executor
4、支持kryo 3.0版本
5、使用scala 2.11替代了scala 2.10
八、移除的功能
1、 bagel模块
2、对hadoop 2.1以及之前版本的支持
3、闭包序列化配置的支持
4、HTTPBroadcast支持
5、基于TTL模式的元数据清理支持
6、半私有的org.apache.spark.Logging的使用支持
7、SparkContext.metricsSystem API
8、与tachyon的面向block的整合支持
9、spark 1.x中标识为过期的所有api
10、python dataframe中返回rdd的方法
11、使用很少的streaming数据源支持:twitter、akka、MQTT、ZeroMQ
12、hash-based shuffle manager
13、standalone master的历史数据支持功能
14、dataframe不再是一个类,而是dataset[Row]的类型别名
八、变化的机制
1、 要求基于scala 2.11版本进行开发,而不是scala 2.10版本
2、SQL中的浮点类型,使用decimal类型来表示,而不是double类型
3、kryo版本升级到了3.0
4、java的flatMap和mapPartitions方法,从iterable类型转变为iterator类型
5、java的countByKey返回
6、写parquet文件时,summary文件默认不会写了,需要开启参数来启用
7、spark mllib中,基于dataframe的api完全依赖于自己,不再依赖mllib包
八、过期的API
1、mesos的细粒度模式
2、java 7支持标识为过期,可能2.x未来版本会移除支持
3、python 2.6的支持