【Big Data 每日一題20180821】Spark中ml和mllib的區別
阿新 • • 發佈:2019-01-01
Spark中ml和mllib的主要區別和聯絡如下:
- ml和mllib都是Spark中的機器學習庫,目前常用的機器學習功能2個庫都能滿足需求。
- spark官方推薦使用ml, 因為ml功能更全面更靈活,未來會主要支援ml,mllib很有可能會被廢棄(據說可能是在spark3.0中deprecated)。
- ml主要操作的是DataFrame, 而mllib操作的是RDD,也就是說二者面向的資料集不一樣。相比於mllib在RDD提供的基礎操作,ml在DataFrame上的抽象級別更高,資料和操作耦合度更低。
- DataFrame和RDD什麼關係?DataFrame是Dataset的子集,也就是Dataset[Row], 而DataSet是對RDD的封裝,對SQL之類的操作做了很多優化。
- 相比於mllib在RDD提供的基礎操作,ml在DataFrame上的抽象級別更高,資料和操作耦合度更低。
- ml中的操作可以使用pipeline, 跟sklearn一樣,可以把很多操作(演算法/特徵提取/特徵轉換)以管道的形式串起來,然後讓資料在這個管道中流動。大家可以腦補一下Linux管道在做任務組合時有多麼方便。
- ml中無論是什麼模型,都提供了統一的演算法操作介面,比如模型訓練都是
fit
;不像mllib中不同模型會有各種各樣的trainXXX
。 - mllib在spark2.0之後進入
維護狀態
, 這個狀態通常只修復BUG不增加新功能。
以上就是ml和mllib的主要異同點。下面是ml和mllib邏輯迴歸的例子,可以對比看一下, 雖然都是模型訓練和預測,但是畫風很不一樣。