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个没有.

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

在不转换类型的情况下,每个框架之间似乎不存在互操作性,因为它们都包含不同的包 struct .

推荐答案

根据我的经验,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的方法,而不是基于数据帧的方法(我 Select 的方法),但我离题了.

要点是,在某些情况下,每个人都非常适合,而在其他情况下,他们可能并不适合.我记得的一个例子是,如果数据已经是 struct 化的,那么与RDD相比,数据帧会带来一些性能优势,随着操作复杂性的增加,这显然是非常严重的.另一个观察结果是,数据集和数据帧在缓存时比RDD消耗的内存少得多.总之,作者得出结论,对于低级操作,RDD很好,但对于高级操作,查看和绑定其他API的数据帧和数据集更为优越.

回到你的问题,我相信答案是一个响亮的pyspark.ml,因为这个包中的课程设计使用pyspark.sql.DataFrames.我可以想象,如果您要针对与DataFrame vs RDD struct 相同的数据进行测试,那么在这些包中实现的复杂算法的性能将非常重要.此外,查看数据和开发引人注目的视觉效果将更加直观,并具有更好的性能.

Python-3.x相关问答推荐

泛型类型的参数的静态类型

正确的本地react 方式-Django身份验证

PythonPandas READ_EXCEL空数据帧

如何将python点击参数设置为与选项回调不同的参数的别名?

PANDAS中当前数据帧的匹配与更新

tkinter treeview 如何在获取所选项目时将设置的对象作为对象返回

基于组/ID从原始数据框中创建两个子数据框

如何确保 GCP Document AI 模型输出与输入文件同名的 JSON?

将 pandas Timestamp() 转换为 datetime.datetime() 以支持 peewee DateTimeField()

为什么 Sympy 不能解决我的非线性系统? Python 解释器一直在执行,直到我终止进程

正则表达式来识别用 Python 写成单词的数字?

在 Django 中执行 JSONRenderer.render(serialized_student_data.data) 时遇到问题

为什么Pandas会在 NaN 上合并?

BeautifulSoup 的 Python 3 兼容性

创建集合的 Python 性能比较 - set() 与 {} 文字

如何将numpy数组图像转换为字节?

类型提示返回 NameError: name 'datetime' not defined

python 3的蓝牙库

向 Python 函数添加属性的最佳方法

通过字典有效地替换Pandas 系列中的值