Spark ML和MLLIB包之间有什么区别

时间:2016-08-08 18:10:39

标签: apache-spark apache-spark-mllib apache-spark-ml

我注意到SparkML中有两个LinearRegressionModel类,一个在ML中,另一个在MLLib包中。

这两个实现方式完全不同 - 例如MLLib中的一个实现Serializable,而另一个则不实现RandomForestModel

顺便说一下,Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked count是真实的。

为什么有两节课?哪个是“正确的”?有没有办法将一个转换成另一个?

2 个答案:

答案 0 :(得分:31)

o.a.s.mllib包含旧的基于RDD的API,而o.a.s.ml包含围绕Dataset和ML管道的新API构建。 mlmllib在2.0.0中达到了功能奇偶校验,并且mllib正在慢慢被弃用(这在线性回归的情况下已经发生),并且很可能在下一个主要版本中被删除。

因此,除非你的目标是向后兼容,否则正确的选择"是o.a.s.ml

答案 1 :(得分:5)

Spark Mllib

spark.mllib包含在RDD之上构建的旧版API。

火花ML

spark.ml提供了基于DataFrames的高层API,用于构建ML管道。

根据[the official announcement

  

从Spark 2.0开始,spark.mllib软件包中基于RDD的API具有   进入维护模式。 Spark的主要机器学习API   现在是spark.ml包中基于DataFrame的API。   建议使用Apache Spark使用spark.ml

     
      
  • MLlib仍将在spark.mllib中支持带有错误修复的基于RDD的API。
  •   
  • MLlib不会向基于RDD的API添加新功能。

  •   
  • 在Spark 2.x发行版中,MLlib将向基于DataFrames的API添加功能,以与基于RDD的API达到功能奇偶。

  •   
  • 达到功能奇偶性(大致针对Spark 2.3估算)后,基于RDD的API将被弃用。
  •   
  • 基于RDD的API有望在Spark 3.0中删除。
  •   
     

为什么MLlib切换到基于DataFrame的API?

     
      
  • DataFrames提供了比RDD更用户友好的API。 DataFrames的许多好处包括Spark数据源,SQL / DataFrame查询,Tungsten和Catalyst优化以及跨语言的统一API。

  •   
  • 用于MLlib的基于DataFrame的API为ML算法和多种语言提供了统一的API。

  •   
  • DataFrame促进了实用的ML管道,特别是功能转换。有关详细信息,请参见管道指南。

  •   

更多信息,请阅读文档-https://spark.apache.org/docs/latest/ml-guide.html