Apache Spark 第一版发布时隔两年后, Databricks 公布了基于上游分支 2.0.0-preview 的 Apache Spark 2.0 技术预览版。该预览版在稳定性和 API 方面均不适合用于生产环境,主要是为了在正式上市前收集来及社区的反馈。
此次发布的新版主要针对社区反馈进一步完善了各种功能,根据 Spark 的开发计划,主要改进分为两方面。
SQL 是基于 Apache Spark 的应用程序最常用的接口之一。Spark 2.0 可以支持全部的 99 个 TPC-DS 查询,这些查询大部分都基于 SQL:2003 规范。这些改进有助于在对应用程序堆栈进行最少量重写的情况下将现有数据负载移植至 Spark 后端。
第二方面改进主要是编程 API,同时在这个新版中也更重视机器学习。spark.mllib 程序包已经被全新的 spark.ml 程序包所取代,后者更加侧重于基于管线的API,这项技术源自 DataFrames 。机器学习管线和模型现已能够持久保存,Spark 所支持的所有语言均支持这一特性。同时R 已经可以支持K-Means、 Generalized Linear Models(GLM)、朴素贝叶斯和Survival Regression。
借助新增的Datasets 类,DataFrames 和Datasets 已实现了统一,可支持Scala 和Java 编程语言,同时也可充当结构流(Structured streaming)的抽象。不支持编译时类型安全(Compile time type safety)的语言暂时还无法做到这一点,此时只能使用DataFrames 作为主要抽象。SQLContext 和HiveContext 已被统一的 SparkSession 所取代。新增的 Accumulator API 具有比基本类型更简单的类型层级,可支持对基本类型进行专门化(Specialization)。老的 API 已被弃用,但为了实现向后兼容性依然包含在新版中。
新发布的结构化流API 主要可用于在不增加复杂性的前提下管理流数据集,借此程序员和现有机器学习算法将可以处理批量加载的数据集。在第二代Tungsten 引擎的帮助下,性能也有所增强,执行速度最高可提升10 倍。
该技术预览版已经发布至 DataBricks 。
评论