Spark MLLib

Spark MLlib和Spark ML是Spark的两个机器学习库,MLlib基于RDD,适合简单任务,但处理复杂流程时结构复杂。Spark ML提供DataFrame API,功能更全面,支持Pipeline,操作更高效。官方推荐使用Spark ML,它具有统一的算法接口和更高的抽象级别。随着Spark发展,mllib将逐渐被弃用,转而重点支持ml。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark MLLib简介
MLlib作为Spark的机器学习库,提供了非常丰富的机器学习算法,比如分类、回归、聚类及推荐算法等。目前,MLlib分为两个代码包:spark.mllib与spark.ml。

spark.mllib

Spark MLlib是Spark的重要组成部分,是最初提供的一个机器学习库。这
个库有一个明显的缺点,就是面对复杂的数据集,需要做多次处理,或者
当需要对新数据结合多个已经训练好的单个模型进行综合计算时,使用
Spark MLlib会使程序结构变得复杂,甚至难以实现。
spark.mllib是基于RDD的原始算法API,目前处于维护状态。该库下包含4
类常见的机器学习算法:分类、回归、聚类、协同过滤。值得注意的是,
基于RDD的API不会再添加新的功能。

在这里插入图片描述
spark.ml

Spark1.2版本引入了ML Pipeline,经过多个版本的发展,Spark ML克服
了MLlib处理机器学习问题的一些不足(复杂、流程不清晰),向用户提
供了基于DataFrame API的机器学习库,提升数据处理效率。
与RDD相比,DataFrame提供了更加友好的API。DataFrame的优势,包
括Spark数据源,SQL / DataFrame查询,Tungsten和Catalyst优化以及跨
语言的统一API。
Spark ML API提供了很多数据特征处理函数,如特征选取、特征转换、类
别数值化、正则化、降维等。另外基于DataFrame API的ml库支持构建机
器学习的Pipeline,把机器学习过程一些任务有序地组织在一起,便于运
行和迁移。

比如说,在数据变换上,Spark ML中提供了非常丰富的数据转换算法,
对数据进行规范化、离散化、衍生指标等;在数据规约上,Spark ML提
供的特征选择和降维的方法。

关于大数据学习,Spark MLlib入门,以上就为大家做了简单的介绍了。
大数据学习是一个循序渐进的过程,Spark生态圈也是重要的学习内容,
一个组件一个组件地深入,慢慢来。

Spark中ml和mllib的主要区别和联系如下:

ml和mllib都是Spark中的机器学习库,目前常用的机器学习功能2个库都
能满足需求。
spark官方推荐使用ml, 因为ml功能更全面更灵活,未来会主要支持ml,
mllib很有可能会被废弃(据说可能是在spark3.0中deprecated)。
ml主要操作的是DataFrame, 而mllib操作的是RDD,也就是说二者面向的
数据集不一样。相比于mllib在RDD提供的基础操作,ml在DataFrame上
的抽象级别更高,数据和操作耦合度更低。
DataFrame和RDD什么关系?DataFrame是Dataset的子集,也就是
Dataset[Row], 而DataSet是对RDD的封装,对SQL之类的操作做了很多
优化。
相比于mllib在RDD提供的基础操作,ml在DataFrame上的抽象级别更
高,数据和操作耦合度更低。
ml中的操作可以使用pipeline, 跟sklearn一样,可以把很多操作(算法/特征
提取/特征转换)以管道的形式串起来,然后让数据在这个管道中流动。大
家可以脑补一下Linux管道在做任务组合时有多么方便。
ml中无论是什么模型,都提供了统一的算法操作接口,比如模型训练都是
fit;不像mllib中不同模型会有各种各样的trainXXX。
mllib在spark2.0之后进入维护状态, 这个状态通常只修复BUG不增加新功
能。
以上就是ml和mllib的主要异同点。下面是ml和mllib逻辑回归的例子,可以
对比看一下, 虽然都是模型训练和预测,但是画风很不一样。

在这里插入图片描述

### Apache Spark MLlib 使用指南教程 #### 一、MLlib概述 MLlib是Apache Spark中的机器学习库,它提供了常见的机器学习算法实现,包括但不限于分类、回归、聚类、协同过滤降维等[^3]。 #### 二、获取官方文档指导 对于希望深入了解并掌握MLlib使用的开发者而言,《Apache Spark官方提供的机器学习指南》是一份不可或缺的学习资料。这份指南不仅详尽介绍了MLlib的核心概念与API使用方式,还深入剖析了各类算法的工作机制,堪称学习MLlib的理想入门读物[^1]。 #### 三、实践案例参考 为了帮助使用者更好地理解应用MLlib,在GitCode平台上有一个名为“MLlibLearning”的开源项目。此项目的创建旨在通过实例展示如何利用MLlib完成具体的机器学习任务,其丰富的代码样例能够有效辅助初学者快速上手[^2]。 #### 四、性能优化考量 值得注意的是,MLlib内部集成了线性代数计算工具包——Breeze;而后者又依赖于Netlib-java来进行高效的数值运算加速。因此,在实际部署环境中确保这些底层支持库的存在与否会对程序执行效率造成影响。当检测到缺少必要的本地库文件时,系统会发出警告通知,并自动切换至基于JVM的默认处理模式继续运作,尽管如此,这可能会导致某些操作的速度有所下降[^4]。 ```python from pyspark.ml.classification import LogisticRegression # 创建逻辑回归模型对象 lr = LogisticRegression(maxIter=10, regParam=0.01) # 训练模型 model = lr.fit(trainingData) # 预测新样本标签 predictions = model.transform(testData) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值