spark的ML和MLLib两个包区别

昨天以前的一个以前的同事问,spark的ML和MLLib两个包区别,好久没用spark了,好多概念都记不住了,所以又看了一遍重新温习下。

Spark官方文档已经写的很明白了 Spark ML Programming Guide。 ML是1.4比Mllib更高抽象的库,它解决如果简洁的设计一个机器学习工作流的问题,而不是具体的某种机器学习算法。未来这两个库会并行发展。

  • spark.mllib中的算法接口是基于RDDs的;
  • spark.ml中的算法接口是基于DataFrames的。

实际使用中推荐ml,建立在DataFrames基础上的ml中一系列算法更适合创建包含从数据清洗到特征工程再到模型训练等一系列工作的ML pipeline;源码中就mllib只是对ml的调用,因为毕竟DataFrames也是RDDs的一个高级的从抽象,所以无论你用哪一个都是没有区别的,不过mllib使用起来还是会方便一些,建议用mllib就好了

ML提倡使用pipelines,把数据想成水,水从管道的一段流入,从另一端流出,这也是spark官方建议的方法

大体概念:DataFrame => Pipeline => A new DataFrame
Pipeline: 是由若干个Transformers和Estimators连起来的数据处理过程
Transformer:入:DataFrame => 出: Data Frame
Estimator:入:DataFrame => 出:Transformer