Spark 1.3.0 是 1.X 系列的第四个版本。 此版本带来了新的 DataFrame API,以及 Spark SQL 从 alpha 项目毕业。 它还在 Spark 的核心引擎中带来了可用性改进,并扩展了 MLlib 和 Spark Streaming。 Spark 1.3 代表了来自 60 多个机构的 174 位贡献者在 1000 多个独立补丁中所做的工作。
要下载 Spark 1.3,请访问下载页面。
Spark 1.3 在核心引擎中看到了一些可用性改进。 核心 API 现在支持多级聚合树,以帮助加速昂贵的 reduce 操作。 已为某些 gotcha 操作添加了改进的错误报告。 Spark 的 Jetty 依赖项现在已进行阴影处理,以帮助避免与用户程序冲突。 Spark 现在支持某些通信端点的 SSL 加密。 最后,实时 GC 指标和记录计数已添加到 UI。
Spark 1.3 添加了一个新的DataFrames API,该 API 在处理结构化数据集时提供强大而方便的运算符。 DataFrame 是基本 RDD API 的演变,它包括命名字段以及模式信息。 可以很容易地从诸如 Hive 表、JSON 数据、JDBC 数据库或 Spark 的新数据源 API 的任何实现等源构造 DataFrame。 数据帧将成为 Spark 组件之间以及导入和导出数据到其他系统时的常用交换格式。 Python、Scala 和 Java 中都支持数据帧。
在此版本中,Spark SQL 从 alpha 项目毕业,为 HiveQL 方言和稳定的编程 API 提供向后兼容性保证。 Spark SQL 添加了对在数据源 API 中写入表的支持。 一个新的JDBC 数据源允许从 MySQL、Postgres 和其他 RDBMS 系统导入和导出。 各种小的更改扩展了 Spark SQL 中 HiveQL 的覆盖范围。 Spark SQL 还添加了对模式演进的支持,能够合并 Parquet 中兼容的模式。
在此版本中,Spark MLlib 引入了几个新算法:用于主题建模的潜在狄利克雷分配 (LDA),用于多类分类的 多项式逻辑回归,用于聚类的 高斯混合模型 (GMM) 和 幂迭代聚类,用于频繁模式挖掘的 FP-growth 以及用于分布式线性代数的块矩阵抽象。 已添加对可交换格式的模型导入/导出的初始支持,该支持将在以后的版本中扩展,以涵盖 Java/Python/Scala 中更多模型类型。 k-means 和 ALS 的实现收到了 更新,从而显着提高了性能。 PySpark 现在支持 Spark 1.2 中添加的 ML 管道 API 以及梯度提升树和 高斯混合模型。 最后,ML 管道 API 已被移植以支持新的 DataFrames 抽象。
Spark 1.3 引入了一个新的 直接 Kafka API (文档),该 API 可以在不使用预写日志的情况下实现恰好一次的交付。 它还添加了一个 Python Kafka API 以及用于未来版本中其他 Python API 的基础架构。 还添加了 逻辑回归的在线版本以及读取 二进制记录的能力。 对于有状态操作,已添加对加载初始状态 RDD的支持。 最后,流编程指南已更新,包括有关流应用程序中 SQL 和 DataFrame 操作的信息,以及对容错语义的重要说明。
GraphX 在此版本中添加了少量实用程序函数,包括转换为规范边图。
Spark 1.3 与 Spark 1.X 版本二进制兼容,因此无需更改代码。 这不包括明确标记为不稳定的 API。
作为稳定 Spark SQL API 的一部分,SchemaRDD
类已重命名为 DataFrame
。 Spark SQL 的 迁移指南详细描述了升级过程。 Spark SQL 现在还要求使用反引号转义使用保留字(例如“string”或“table”)的列标识符。
此版本有一些已知问题,将在 Spark 1.3.1 中解决
collect()
中的内存泄漏。感谢所有贡献者!