从Spark2.0开始,基于RDD API的`spark.mlib`机器学习库进入维护阶段,不再新增功能,从而开发出了基于DataFrame API的机器学习库`spark.ml`。
<br/>
**为什么要从`spark.mlib`迁移到`spark.ml`:**
(1)DataFrames 提供比 RDD 更友好的 API。DataFrame 的许多优点包括Spark支持多种数据源、DataFrame支持SQL查询、Tungsten 和 Catalyst 优化以及跨语言的统一 API。
(2)MLlib 的基于 DataFrame 的 API 提供跨 ML 算法和跨多种语言的统一 API。
(3)数据框便于实际的 ML 管线,特别是功能转换。
<br/>
**ML 和 MLlib 的区别:**
(1)ML 是升级版的 MLlib,最新的 Spark 版本优先支持 ML。
(2)ML 支持 DataFrame 数据结构和 Pipelines,而 MLlib 仅支持 RDD 数据结构。
(3)ML 明确区分了分类模型和回归模型,而 MLlib 并未在顶层做此类区分。
(4)ML 通过 DataFrame 元数据来区分连续和分类变量。
(5)ML 中的随机森林支持更多的功能:包括重要度、预测概率输出等,而MLlib 不支持。