1. 程式人生 > >【Big Data 每日一題20180821】Spark中ml和mllib的區別

【Big Data 每日一題20180821】Spark中ml和mllib的區別

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邏輯迴歸的例子,可以對比看一下, 雖然都是模型訓練和預測,但是畫風很不一樣。