Spark MLlib机器学习实践(第2版)
上QQ阅读APP看书,第一时间看更新

1.4 核心——MLlib

如果将Spark比作一个闪亮的星星的话,那么其中最明亮最核心的部分就是MLlib。MLlib是一个构建在Spark上的、专门针对大数据处理的并发式高速机器学习库,其特点是采用较为先进的迭代式、内存存储的分析计算,使得数据的计算处理速度大大高于普通的数据处理引擎。

MLlib机器学习库还在不停地更新中,Apache的相关研究人员仍在不停地为其中添加更多的机器学习算法。目前MLlib中已经有通用的学习算法和工具类,包括统计、分类、回归、聚类、降维等,如图1-2所示。

图1-2 MLlib的算法和工具类

对预处理后的数据进行分析,从而获得包含着数据内容的结果是MLlib的最终目的。MLlib作为Spark的核心处理引擎,在诞生之初就为了处理大数据而采用了“分治式”的数据处理模式,将数据分散到各个节点中进行相应的处理。通过数据处理的“依赖”关系从而使得处理过程层层递进。这个过程可以依据要求具体编写,好处是避免了大数据处理框架所要求进行的大规模数据传输,从而节省了时间,提高了处理效率。

同时,MLlib借助于函数式程序设计思想,程序设计人员在编写程序的过程中只需要关注其数据,而不必考虑函数调用顺序,不用谨慎地设置外部状态。所有要做的就是传递代表了边际情况的参数。

MLlib采用Scala语言编写,Scala语言是运行在JVM上的一种函数式编程语言,特点就是可移植性强,“一次编写,到处运行”是其最重要的特点。借助于RDD数据统一输入格式,让用户可以在不同的IDE上编写数据处理程序,通过本地化测试后可以在略微修改运行参数后直接在集群上运行。对结果的获取更为可视化和直观,不会因为运行系统底层的不同而造成结果的差异与改变。

MLlib是Spark的核心内容,也是其中最闪耀的部分。对数据的分析和处理是Spark的精髓,也是挖掘大数据这座宝山的金锄头,本书的内容也是围绕MLlib进行的。