`pyspark mllib` 与 `pyspark ml` 包

问题描述 投票:0回答:1

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
则没有。

我的理解是,如果在 Apache Spark 框架上实现算法是

mllib
但似乎存在分裂,则应该使用该库?

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

python python-3.x apache-spark pyspark apache-spark-mllib
1个回答
23
投票

根据我的经验,

pyspark.mllib
类只能与
pyspark.RDD
类一起使用,而(正如您提到的)
pyspark.ml
类只能与
pyspark.sql.DataFrame
类一起使用。在
pyspark.ml
的文档中提到支持这一点,
pyspark.ml package
中的第一个条目指出:

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

现在我想起了不久前读过的一篇文章,内容涉及 Spark 2.0 中可用的三个 API、它们的相对优点/缺点以及它们的比较性能。 三个 Apache Spark API 的故事:RDD、DataFrame 和 Datasets。我当时正在新的客户端服务器上进行性能测试,并且很感兴趣是否存在值得开发基于 RDD 的方法而不是基于 DataFrame 的方法(我选择的方法)的场景,但我离题。

要点是,在某些情况下,每种情况都非常适合,而在另一些情况下,它们可能不适合。我记得的一个例子是,如果您的数据已经是结构化的,那么 DataFrame 比 RDD 具有一些性能优势,随着操作复杂性的增加,这显然是巨大的。另一个观察结果是,DataSet 和 DataFrame 在缓存时消耗的内存比 RDD 少得多。总而言之,作者得出的结论是,对于低级操作,RDD 很棒,但对于高级操作,查看以及与其他 API 的 DataFrame 和 DataSet 的绑定更优越。

所以,回到你的问题,我相信答案是响亮的

pyspark.ml
,因为这个包中的类旨在利用
pyspark.sql.DataFrames
。我想,如果您要针对与 DataFrame 和 RDD 相同的数据结构进行测试,那么在每个包中实现的复杂算法的性能将非常重要。此外,查看数据和开发引人注目的视觉效果将更加直观,并且具有更好的性能。

© www.soinside.com 2019 - 2024. All rights reserved.