Spark Core & SparkSQL
- dataframe与dataset统一,dataframe只是dataset[Row]的类型别名,移除dataframe类。
- dataset增强聚合api
- SparkSession:统一SQLContext和HiveContext
- accumulator功能增强:便携api、webUI支持,性能提高
- 支持sql2003 标准
- 支持ansi-sql和hive sql的sql parser
- 支持ddl命令
- 支持子查询
- 支持csv文件
- 支持hive风格的bucket表
- 通过whole-stage code genetation技术将spark sql和dataset的性能提升2~10倍
- 通过vectorization技术提升parquet文件的扫描吞吐量
- 提升orc文件的读写性能
- 提升catalyst查询优化器的性能
- 通过native实现方式提升窗口函数的性能
- 对某些数据源进行自动文件合并
Spark MLlib
- Spark MLlib 未来将主要基于dataset api来实现,基于rdd的api转为维护阶段
- 基于dataframe的api,支持持久化保存和加载模型和pipeline
- 基于dataframe的api,支持更多算法,包括k-means,高斯混合、maxabsscaler
- spark R 支持mlib算法,包括线性回归,朴素贝叶斯、k-means、多元回归等
- pyspark支持更多MLlib算法,包括LDA、高斯混合、泛化线性回归等
- 基于dataframe的api,向量和矩阵使用性能更高的序列化机制
Spark Streaming
- 发布测试版的structured streaming:
基于spark sql和catalyst引擎构建
支持使用dataframe风格的api进行流式计算操作
catalyst 引擎能够对执行计划进行优化 - 基于DStream的api支持kafka 0.10 版本
依赖管理、打包
- 不再需要在生产环境部署时打包fat jar,可以使用provided风格
- 完全移除了对akka的依赖(spark 1.6已经开始移除一部分)
- mesos粗粒度模式下,支持启动多个executor
- 支持kryo 3.0版本
- 使用scala 2.11 替代了scala 2.10
移除的功能
- bagel模块
- 对hadoop2.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]的类型别名
变化的机制
- SQL中的浮点类型,使用decima类型表示,而不是double类型
- JAVA的flatMap和mapPartition方法,从iterable类型转变为iterator类型
- JAVA的countByKey返回<K,Long>类型,而不是<K,Object>类型
- 写parquet文件时,summary文件默认不会写了,需要开启参数来启用
- spark millib 中,基于dataframe的api完全依赖自己,不在依赖mllib包
过期的API
- mesos的细粒度支持
- java7支持标记为过期,可能2.x未来版本会移除支持
- python 2.6 的支持