從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 不支持。