问题 `pyspark mllib`与`pyspark ml`包


有什么区别 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 但似乎有分裂?

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


12557
2018-04-05 19:59


起源



答案:


根据我的经验 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和数据集。我正在对新的客户端服务器进行性能测试,并且有兴趣是否会出现一个值得开发基于RDD的方法而不是基于DataFrame的方法(我选择的方法)的场景,但是我离题。

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

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


14
2018-04-05 21:11



+1,根据我的经验,在算法实现方面,在RDD级别实现的速度比在数据帧级别快,但我偏向于更喜欢功能(rdd)而不是sql(数据帧)样式。 - blue-sky


答案:


根据我的经验 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和数据集。我正在对新的客户端服务器进行性能测试,并且有兴趣是否会出现一个值得开发基于RDD的方法而不是基于DataFrame的方法(我选择的方法)的场景,但是我离题。

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

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


14
2018-04-05 21:11



+1,根据我的经验,在算法实现方面,在RDD级别实现的速度比在数据帧级别快,但我偏向于更喜欢功能(rdd)而不是sql(数据帧)样式。 - blue-sky