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.htmlpyspark mllib
似乎是在嵌入式框架级别pyspark ml
的目标算法
我发现的一个区别是pyspark ml
实现了pyspark.ml.tuning.CrossValidator
,而pyspark mllib
没有。
我的理解是,如果在Apache Spark框架上实现算法是mllib
,那么应该使用这个库,但是似乎有一个分裂?
在没有转换类型的情况下,每个框架之间似乎没有互操作性,因为它们每个都包含不同的包结构。
1条答案
按热度按时间px9o7tmv1#
根据我的经验,
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的方法(我选择的方法)感兴趣,但我离题了。
要点是,在某些情况下,每一种方法都非常适合,而在其他情况下,它们可能不适合。我记得的一个例子是,如果你的数据已经是结构化的,那么DataFrame会比RDD带来一些性能上的好处,随着操作复杂性的增加,这显然是非常明显的。另一个观察是,数据集和 Dataframe 在缓存时消耗的内存比RDD少得多。总之,作者的结论是,对于低级操作,RDD是伟大的,但对于高级操作,查看,并与其他API的 Dataframe 和数据集绑定是上级。
所以回到你的问题,我相信答案是一个响亮的
pyspark.ml
,因为这个包中的类被设计为使用pyspark.sql.DataFrames
。我可以想象,如果您要对DataFrame与RDD结构化的相同数据进行测试,那么在这些包中实现的复杂算法的性能将非常重要。此外,查看数据和开发引人注目的视觉效果将更加直观,并具有更好的性能。