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框架上实现算法是mllib,那么库应该使用,但似乎存在分裂?
在没有转换类型的情况下,每个框架之间似乎没有互操作性,因为每个框架都包含不同的包结构。
发布于 2017-04-05 21:11:09
根据我的经验,pyspark.mllib类只能与pyspark.RDD类一起使用,而pyspark.ml类只能用于pyspark.sql.DataFrame类。在pyspark.ml文档中提到了这一点,这是pyspark.ml package中的第一个条目:
基于DataFrame的机器学习API使用户能够快速地组装和配置实用的机器学习管道。
现在,我想起了我一段时间前读过的一篇文章,内容涉及Spark2.0中提供的三个API、它们的相对优缺点以及它们的比较性能。三个Apache的故事:RDD、DataFrames和数据集。我当时正在新客户端服务器上进行性能测试,我感兴趣的是,是否有一种方案值得开发基于RDD的方法,而不是基于DataFrame的方法(我选择的方法),但我偏离了方向。
要点是,在某些情况下,每种情况都是非常合适的,而其他情况则可能不合适。我记得的一个例子是,如果您的数据已经结构化了,DataFrames比RDD带来了一些性能上的好处,那么随着操作的复杂性的增加,这显然是极端的。另一个发现是,DataSets和DataFrames在缓存时消耗的内存要比RDD少得多。总之,对于低级别操作,RDD是很好的,但是对于高级操作,查看和绑定其他API的DataFrames和DataSets更好。
因此,为了完整地回答您的问题,我相信答案是一个响亮的pyspark.ml,因为这个包中的类是为了利用pyspark.sql.DataFrames而设计的。我可以想象,如果您要针对作为DataFrame和RDD的相同结构的数据进行测试,那么在这些包中实现的复杂算法的性能将是非常重要的。此外,查看数据和开发引人注目的可视化将更加直观,并具有更好的性能。
https://stackoverflow.com/questions/43240539
复制相似问题