Spark MLlib
美图欣赏:
机器学习库(MLlib)
MLlib是Spark的机器学习(ML)库。其目标是使实用的机器学习可扩展且容易。在较高级别,它提供了以下工具:
- ML算法:常见的学习算法,例如分类,回归,聚类和协作过滤
- 特征化:特征提取,变换,降维和选择
- 管道:用于构建,评估和调整ML管道的工具
- 持久性:保存和加载算法,模型和管道
- 实用程序:线性代数,统计信息,数据处理等
声明:基于DataFrame的API是主要API
基于MLlib RDD的API现在处于维护模式。
从Spark 2.0开始,程序包中基于RDD的API spark.mllib
已进入维护模式。现在,用于Spark的主要机器学习API是软件包中基于DataFrame的API spark.ml
。
这意味着什么?
- MLlib仍将
spark.mllib
通过错误修复支持基于RDD的API 。 - MLlib不会向基于RDD的API添加新功能。
- 在Spark 2.x发行版中,MLlib将向基于DataFrames的API添加功能,以与基于RDD的API达到功能奇偶。
- 达到功能奇偶性(大致针对Spark 2.2估算)后,将不推荐使用基于RDD的API。
- 预计将在Spark 3.0中删除基于RDD的API。
为什么MLlib切换到基于DataFrame的API?
- 与RDD相比,DataFrames提供了更加用户友好的API。DataFrames的许多好处包括Spark数据源,SQL / DataFrame查询,Tungsten和Catalyst优化以及跨语言的统一API。
- 用于MLlib的基于DataFrame的API为ML算法和多种语言提供了统一的API。
- DataFrame有助于实际的ML管道,特别是功能转换
Mllib在spark中是一个可扩展的机器学习库
saprk对于机器学习有得天独厚的优势。
伪代码:
double Jackson = 1.0
while(Jackson > 0.01){
建模
wucha -= 某个值
}
机器学习算法一般会有很多迭代计算步骤,来活得足够小的误差,或者足够收敛的时候才会停止。
1.mapreduce是可以做迭代计算,但是在这个过程中每次将数据写进磁盘,会导致非常大的IO和消耗CPU。
而spark是基于内存计算的擅长迭代计算,每一步都是在内存完成,必要情况下会落盘。
spark是机器学习一个比较理想的平台。
2.通信:mapreduce中的通信时靠心跳的方式来进行通信
spark中akka netty通信系统,通信的效率很高。
Mllib是spark的常用机器学习的库的实现。同时还包括相关的测试数据,和数据生成器。
————保持饥饿,保持学习
Jackson_MVP