0
在高层我知道Spark MLLib是写在RDD之上的,Spark ML是建立在DataFrame之上的,但我的理解缺乏细节。spark mllib和spark ml的矢量实现之间有什么区别?
尤其是,不同向量实现的兼容性缺乏让我想知道实现中的差异以及为什么选择这些设计决策?
在高层我知道Spark MLLib是写在RDD之上的,Spark ML是建立在DataFrame之上的,但我的理解缺乏细节。spark mllib和spark ml的矢量实现之间有什么区别?
尤其是,不同向量实现的兼容性缺乏让我想知道实现中的差异以及为什么选择这些设计决策?
在SPARK-13944中解释了保持局部线性代数ml
的动机。
将线性代数作为独立模块划分出来,无需使用Spark依赖关系来简化生产部署。我们可以调用新模块mllib-local,它可能包含未来的本地模型。 主要问题是删除用户定义类型的依赖关系。
软件包名称将从mllib更改为ml。例如,Vector将从
org.apache.spark.mllib.linalg.Vector
更改为org.apache.spark.ml.linalg.Vector
。新ML流水线中的返回矢量类型将是ML包中的一个;但是,现有的mllib代码不会被触及。因此,这可能会破坏API。另外,当矢量由Spark SQL从mllib矢量加载时,矢量将自动转换为ml包中的一个。
眼下实现接近相同,排除了一些转换方法,
谢谢你,这是明确的! – HBX