`pyspark mllib`与`pyspark ml`包

时间:2017-04-05 19:59:01

标签: python python-3.x apache-spark pyspark

pyspark mllibpyspark ml套餐之间有什么区别? :

https://spark.apache.org/docs/latest/api/python/pyspark.mllib.html

https://spark.apache.org/docs/latest/api/python/pyspark.ml.html

pyspark mllib似乎是数据框级别pyspark ml

的目标算法

我发现一个区别是pyspark ml实现了pyspark.ml.tuning.CrossValidatorpyspark mllib没有。{/ p>

我的理解是,如果在Apache Spark框架上实现算法是mllib,那么库应该使用但是似乎存在分裂?

在没有转换类型的情况下,每个框架之间似乎没有互操作性,因为它们各自包含不同的包结构。

1 个答案:

答案 0 :(得分:20)

根据我的经验pyspark.mllib课程只能与pyspark.RDD一起使用,而(如您所述)pyspark.ml课程只能与pyspark.sql.DataFrame一起使用'第有人提到在pyspark.ml的文档中支持这一点,这是pyspark.ml package州的第一个条目:

  

基于DataFrame的机器学习API,可让用户快速组装和配置实用的机器学习流程。

现在我想起了一篇关于Spark 2.0中可用的三个API,它们的相对优点/缺点以及它们的比较性能的文章。 A Tale of Three Apache Spark APIs: RDDs, DataFrames, and Datasets。我正在对新的客户端服务器进行性能测试,并且有兴趣是否会出现一个值得开发基于RDD的方法的场景,而不是基于DataFrame的方法(我选择的方法),但我离题。

要点是,在某些情况下,每个人都非常适合,而其他人可能不适合。我记得的一个例子是,如果数据已经结构化,DataFrames会比RDD提供一些性能优势,但随着运营复杂性的增加,这显然是极其激烈的。另一个观察结果是,DataSets和DataFrames在缓存时消耗的内存远远少于RDD。总之,作者得出结论,对于低级操作,RDD很棒,但对于高级操作,查看和绑定其他API的DataFrame和DataSet是优越的。

因此,为了回到你问题的完整循环,我相信答案是响亮的pyspark.ml,因为此包中的类旨在利用pyspark.sql.DataFrames。我想如果你要针对与DataFrame和RDD相同的数据进行测试,那么在每个软件包中实现的复杂算法的性能都会很重要。此外,查看数据和开发引人注目的视觉效果将更直观,性能更佳。