pyspark mllib
和pyspark 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.CrossValidator
而pyspark mllib
没有。{/ p>
我的理解是,如果在Apache Spark框架上实现算法是mllib
,那么库应该使用但是似乎存在分裂?
在没有转换类型的情况下,每个框架之间似乎没有互操作性,因为它们各自包含不同的包结构。
答案 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相同的数据进行测试,那么在每个软件包中实现的复杂算法的性能都会很重要。此外,查看数据和开发引人注目的视觉效果将更直观,性能更佳。