MLlib是Spark的机器学习(ML)库。 其目标是使实际的机器学习具有可扩展性和易用性。
在较高的层面上,它提供了以下工具:
(1)ML算法:通用学习算法,如分类,回归,聚类和协作过滤
(2)特征提取:特征提取,转换,降维和选择
(3)管道:用于构建,评估和调整ML管道的工具
(4)持久性:保存和加载算法,模型和管道
(5)实用程序:线性代数,统计,数据处理等
公告:基于DataFrame的API是主要的API
基于MLlib RDD的API现在处于维护模式。
从Spark 2.0开始,spark.mllib包中的基于RDD的API已进入维护模式。 Spark的主要机器学习API现在是spark.ml包中的基于DataFrame的API。
什么影响?
(1)MLlib仍然会支持spark.mllib中基于RDD的API并提供错误修复。
(2)MLlib不会将新功能添加到基于RDD的API。
(3)在Spark 2.x版本中,MLlib将向基于DataFrames的API添加功能以达到与基于RDD的API的功能一致性。
(4)达到功能奇偶校验(大致估计为Spark 2.3)后,基于RDD的API将被弃用。
(5)预计在Spark 3.0中将删除基于RDD的API。
为什么MLlib切换到基于DataFrame的API?
(1)DataFrames提供比RDD更友好的API。 DataFrame的许多优点包括Spark数据源,SQL / DataFrame查询,Tungsten和Catalyst优化以及跨语言的统一API。
(2)MLlib的基于DataFrame的API提供跨ML算法和跨多种语言的统一API。
(3)DataFrames方便实用ML管道,特别是功能转换。 有关详细信息,请参阅管道指南。
什么是“Spark ML”?
“Spark ML”不是一个正式名称,但偶尔用于指代基于MLlib DataFrame的API。 这主要是由于基于DataFrame的API所使用的org.apache.spark.ml Scala包名称以及我们最初用来强调管道概念的“Spark ML Pipelines”术语。
MLlib是否被弃用?
不会,MLlib包含基于RDD的API和基于DataFrame的API。 基于RDD的API现在处于维护模式。 但是这两种API都没有被弃用,也没有和MLlib作为一个整体。
依赖
MLlib使用线性代数包Breeze,它依赖于netlib-java进行优化的数值处理。 如果本机库1在运行时不可用,您将看到一条警告消息,而将使用纯JVM实现。
登录 | 立即注册