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 操作。对于某些易错操作,增加了改进的错误报告。Spark 的 Jetty 依赖项现在已进行着色(shaded)处理,以帮助避免与用户程序发生冲突。Spark 现在支持某些通信端点的SSL 加密。最后,实时GC 指标和记录计数已添加到 UI 中。
Spark 1.3 新增了一个DataFrames API,它在处理结构化数据集时提供了强大而便捷的操作符。DataFrame 是基础 RDD API 的演进,它包含命名字段和模式信息。可以轻松地从 Hive 表、JSON 数据、JDBC 数据库或 Spark 新数据源 API 的任何实现等来源构建 DataFrame。DataFrames 将成为 Spark 组件之间以及向其他系统导入和导出数据的通用交换格式。DataFrames 支持 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()
中存在内存泄漏。感谢所有贡献者!