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

vya*_*hir 33 apache-spark apache-spark-ml apache-spark-mllib

我注意到LinearRegressionModelSparkML中有两个类,一个在ML中,另一个在MLLib包中.

这两个实现方式完全不同 - 例如,一个来自MLLib工具Serializable,而另一个则没有.

顺便说一句,Ame是真实的RandomForestModel.

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

zer*_*323 39

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

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


vaq*_*han 10

Spark Mllib

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

火花ML

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

根据[ 官方公告

从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?

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

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

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

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