【Spark】Spark2.x版新特性

【Spark】Spark2.x版新特性

      • 一、API
      • 二、SQL
      • 三、性能
      • 四、 Spark Streaming
      • 五、Spark MLlib
      • 六、Other

一、API

  1. 出现新的上下文接口:SparkSession,统一了SQLContext和HiveContext,并且为SparkSession开发了新的流式调用的configuration API

  2. 统一了DataFrame和DataSet。DataFrame相当于DataSet[Row],以及DataSet的增强聚合API

  3. 增强了累加器accumulator的功能,支持Web UI,便捷的API,性能更高

二、SQL

  1. 支持SQL2003标准

  2. 支持ansi-sql 和hive ql的sql parser(SQL解析器)

  3. 支持DDL,支持子查询(in/not in 、 exists/ not exists)

三、性能

  1. 通过whole-stage-code generation(全流程代码生成)技术将SparkSQL和DataSet的性能提升了2~10倍。(在下一篇博文中会浅谈全流程代码生成技术)

  2. 通过vectorization(向量化)技术提升parquet文件的扫描吞吐量

  3. 提升orc文件的读写性能

  4. 提升catalyst查询优化器的性能

  5. 通过native实现方式提升窗口函数的性能

四、 Spark Streaming

  1. Structured Streaming在Spark2.0中是测试版,2.0之后是released版,它基于SparkSQL和Catalyst引擎构建,支持DataFrame风格的API进行流式计算。

  2. 基于DStream的API支持kafka0.10版本

五、Spark MLlib

  1. 基于DataFrame的API支持持久化保存、加载模型、Pipeline,支持更多的算法,支持向量和矩阵使用性能更高的序列化机制。

  2. Spark R支持MLlib算法,包括线性回归、朴素贝叶斯等

  3. 未来Spark MLlib将主要基于DataSet API来实现,基于RDD和API将转为维护阶段

六、Other

  1. 支持csv文件

  2. 支持hive风格的bucket表

  3. 支持缓存和程序运行的堆外内存管理

  4. 完全移除了对akka的依赖

  5. 使用Scala2.11代替了Scala2.10,要求基于Scala2.11版本进行开发,而不是Scala2.10

  6. Mesos粗粒度模式下,支持启动多个Executor

你可能感兴趣的:(Spark)