Spark2.0版本新特性学习笔记

一、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的支持

你可能感兴趣的:(Spark)