1.Spark SQL API
dataframe与dataset统一,dataframe只是dataset[Row]的类型别名
- SparkSession:统一SQLContext和HiveContext,新的上下文入口
- 为SparkSession开发的一种新的流式调用的configuration api
- accumulator功能增强:便捷api、web ui支持、性能更高
- dataset的增强聚合api
2.SQL
- 支持sql 2003标准
- 支持ansi-sql和hive ql的sql parser
- 支持ddl命令
- 支持子查询:in/not in、exists/not exists
3.Spark SQL new feature
- 支持csv文件
- 支持缓存和程序运行的堆外内存管理
- 支持hive风格的bucket表
- 支持近似概要统计,包括近似分位数、布隆过滤器、最小略图
4.Spark SQL 性能
- 通过whole-stage code generation技术将spark sql和dataset的性能提升2~10倍
- 通过vectorization技术提升parquet文件的扫描吞吐量
- 提升orc文件的读写性能
- 提升catalyst查询优化器的性能
- 通过native实现方式提升窗口函数的性能
- 对某些数据源进行自动文件合并
5.Spark MLlib
- spark mllib未来将主要基于dataset api来实现,基于rdd的api转为维护阶段
- 基于dataframe的api,支持持久化保存和加载模型和pipeline
- 基于dataframe的api,支持更多算法,包括二分kmeans、高斯混合、maxabsscaler等
- spark R支持mllib算法,包括线性回归、朴素贝叶斯、kmeans、多元回归等
- pyspark支持更多mllib算法,包括LDA、高斯混合、泛化线性回顾等
- 基于dataframe的api,向量和矩阵使用性能更高的序列化机制
6.Spark Streaming
- 发布测试版的structured streaming
- 基于spark sql和catalyst引擎构建
- 支持使用dataframe风格的api进行流式计算操作
- catalyst引擎能够对执行计划进行优化
- 基于dstream的api支持kafka 0.10版本
7.依赖管理、打包和操作
- 不再需要在生产环境部署时打包fat jar,可以使用provided风格
- 完全移除了对akka的依赖
- mesos粗粒度模式下,支持启动多个executor
- 支持kryo 3.0版本
- 使用scala 2.11替代了scala 2.10
8.移除的功能
- 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]的类型别名
9.变化的机制
- 要求基于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包
10.过期的API
- mesos的细粒度模式
- java 7支持标识为过期,可能2.x未来版本会移除支持
- python 2.6的支持
网友评论