spark 2.0 新特性

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

过期的API

  • mesos的细粒度支持
  • java7支持标记为过期,可能2.x未来版本会移除支持
  • python 2.6 的支持

你可能感兴趣的:(spark 2.0 新特性)