机器学习库 (MLlib) 指南

MLib 是 Spark 的机器学习(ML)库。其目标是使实用的机器学习具有可扩展性并且变得容易。在较高的水平上,它提供了以下工具:

公告: 基于 DataFrame 的 API 是主要的 API

MLlib 的基于 RDD 的 API 现在处于维护状态。

从 Spark 2.0 开始, spark.mllib 包中的基于 RDD 的 API 已经进入了维护模式。Spark 的主要的机器学习 API 现在是 spark.ml 包中的基于 DataFrame 的 API 。

有什么影响?

为什么 MLlib 切换到基于 DataFrame 的 API ?

什么是 “Spark ML” ?

MLlib 是否被弃用了?

依赖

MLlib 使用线性代数包 Breeze ,这取决于 netlib-java 进行优化数字处理。如果 native libraries1 (本地库)在运行时不可用,您将看到一条警告消息并且 pure JVM 将使用实现。

由于运行时专用二进制文件的许可问题,我们不包括 netlib-java 的本机默认情况下代理。 要配置 netlib-java / Breeze 以使用系统优化的二进制文件,包括 com.github.fommil.netlib:all:1.1.2 (或者用 -Pnetlib-lgpl 构建 Spark )作为你项目的依赖并参阅 netlib-java 文档了解为您的平台的额外安装说明。

要在 Python 中使用 MLlib ,您将需要 NumPy 1.4 版本或者更高版本。

2.2 中的亮点

下面的列表突出显示了在 Spark 发行的 2.2 版本中添加到 MLlib 的一些新功能和增强功能:

Migration guide (迁移指南)

MLlib 正在积极发展。标记为 Experimental/DeveloperApi 的 APIs 可能会在将来的版本中更改,下面的迁移指南将解释发行版本之间的所有更改。

从 2.1 到 2.2

重大改变

没有重大改变。

behavior 的弃用和更改

弃用

没有弃用。

behavior 的更改

以前的 Spark 版本

以前的迁移指南已经在 这个页面 进行了归档。


  1. 要了解更多关于本地系统优化的好处和背景,您可能希望观看 Sam Halliday 的 ScalaX 讨论关于 Scala 中的高性能线性代数 。