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