179、Spark 2.0之新特性介绍

2019-02-11  本文已影响0人  ZFH__ZJ

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

SQL

  1. 支持sql 2003标准
  2. 支持ansi-sql和hive ql的sql parser
  3. 支持ddl命令
  4. 支持子查询:in/not in、exists/not exists

new feature

  1. 支持csv文件
  2. 支持缓存和程序运行的堆外内存管理
  3. 支持hive风格的bucket表
  4. 支持近似概要统计,包括近似分位数、布隆过滤器、最小略图

性能

  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返回<K,Long>类型,而不是<K,Object>类型
  6. 写parquet文件时,summary文件默认不会写了,需要开启参数来启用
  7. spark mllib中,基于dataframe的api完全依赖于自己,不再依赖mllib包

过期的API

  1. mesos的细粒度模式
  2. java 7支持标识为过期,可能2.x未来版本会移除支持
  3. python 2.6的支持
上一篇下一篇

猜你喜欢

热点阅读