京公网安备 11010802034615号
经营许可证编号:京B2-20210330
大数据工具比较-R语言和Spark谁更强
现如今的大数据工具真是多,在数据分析师工作中,使用哪些工具更加合适呢,r语言和Spark机器学习那个中有市场率更高些,那个在运算中更快更强些呢?
Spark的机器学习库。
背景介绍
由于R语言本身是单线程的,所以可能从性能方面对比Spark和R并不是很明智的做法。即使这种比较不是很理想,但是对于那些曾经遇到过这些问题的人,下文中的一些数字一定会让你很感兴趣。
你是否曾把一个机器学习的问题丢到R里运行,然后等上好几个小时?而仅仅是因为没有可行的替代方式,你只能耐心地等。所以是时候去看看Spark的机器学习了,它包含R语言大部分的功能,并且在数据转换和性能上优于R语言。
曾经我尝试过利用不同的机器学习技术——R语言和Spark的机器学习,去解决同一个特定的问题。为了增加可比性,我甚至让它们运行在同样的硬件环境和操作系统上。并且,在Spark中运行单机模式,不带任何集群的配置。
在我们讨论具体细节之前,关于Revolution R 有个简单的说明。作为R语言的企业版,Revolution R试图弥补R语言单线程的缺陷。但它只能运行在像Revolution Analytics这样的专有软件上,所以可能不是理想的长期方案。如果想获得微软Revolution Analytics软件的扩展,又可能会让事情变得更为复杂,比方说牵扯到许可证的问题。
因此,社区支持的开源工具,像是Spark,可能成为比R语言企业版更好的选择。
数据集和问题
分析采用的是Kaggle网站 [译者注:Kaggle是一个数据分析的竞赛平台,网址:https://www.kaggle.com/]上的数字识别器的数据集,其中包含灰度的手写数字的图片,从0到9。
每张图片高28px,宽28px,大小为784px。每个像素都包含关于像素点明暗的值,值越高代表像素点越暗。像素值是0到255之间的整数,包括0和255。整张图片包含第一列在内共有785列数据,称为“标记”,即用户手写的数字。
分析的目标是得到一个可以从像素数值中识别数字是几的模型。
选择这个数据集的论据是,从数据量上来看,实质上这算不上是一个大数据的问题。
对比情况
针对这个问题,机器学习的步骤如下,以得出预测模型结束:
在上述步骤之前,我已经将标记的数据分成了训练组和测试组,用于训练模型和在精度上验证模型的性能。
大部分的步骤都在R语言和Spark上都运行了。详细的对比情况如下,主要是对比了主成分分析、二元逻辑模型和朴素贝叶斯分类模型的部分。
主成分分析
主成分分析的主要计算复杂度在对成分的打分上,逻辑步骤如下:
在我们这个例子中,打分的结果是42000 x 784的维度矩阵与784 x 9的矩阵相乘。坦白说,这个计算过程在R中运行了超过4个小时,而同样的运算Spark只用了10秒多
矩阵相乘差不多是3亿次运算或者指令,还有相当多的检索和查找操作,所以Spark的并行计算引擎可以在10秒钟完成还是非常令人惊讶的。
我通过查看前9个主成分的方差,来验证了所产生的主成分的精度。方差和通过R产生的前9个主成分的方差吻合。这一点确保了Spark并没有牺牲精度来换取性能和数据转换上的优势。
逻辑回归模型
与主成分分析不同的是,在逻辑回归模型中,训练和打分的操作都是需要计算的,而且都是极其密集的运算。在这种模型的通用的数据训练方案中包含一些对于整个数据集矩阵的转置和逆运算。
由于计算的复杂性,R在训练和打分都需要过好一会儿才能完成,准确的说是7个小时,而Spark只用了大概5分钟。
这里我在45个从0到9的双位数字上运行了二元逻辑回归模型,打分/验证也是在这45个测试数据上进行的。
我也并行执行了多元逻辑回归模型,作为多类分类器,大概3分钟就完成了。而这在R上运行不起来,所以我也没办法在数据上进行对比。
对于主成分分析,我采用AUC值 [译者注: AUC的值就是计算出ROC曲线下面的面积,是度量分类模型好坏的一个标准。]来衡量预测模型在45对数据上的表现,而Spark和R两者运行的模型结果的AUC值差不多。
朴素贝叶斯分类器
与主成分分析和逻辑回归不一样的是,朴素贝叶斯分类器不是密集计算型的。其中需要计算类的先验概率,然后基于可用的附加数据得到后验概率。[译者注:先验概率是指根据以往经验和分析得到的概率,它往往作为”由因求果”问题中的”因”出现的概率;后验概率是指在得到“结果”的信息后重新修正的概率,是“执果寻因”问题中的”果”。]
如上图所示,R大概花了45余秒完成,而Spark只用了9秒钟。像之前一样,两者的精确度旗鼓相当。
同时我也试着用Spark机器学习运行了决策树模型,大概花了20秒,而这个在R上完全运行不起来。
Spark机器学习入门指南
对比已经足够,而这也成就了Spark的机器学习。 最好是从编程指南开始学习它。不过,如果你想早点尝试并从实践中学习的话,你可能要痛苦一阵子才能将它运行起来吧。
为搞清楚示例代码并且在数据集上进行试验,你需要先去弄懂Spark的RDD [译者注:RDD,Resilient Distributed Datasets,弹性分布式数据集]支持的基本框架和运算。然后也要弄明白Spark中不同的机器学习程序,并且在上面进行编程。当你的第一个Spark机器学习的程序跑起来的时候,你可能就会意兴阑珊了。
以下两份资料可以帮你避免这些问题,同时理顺学习的思路:
https://github.com/vivekmurugesan/experiments/tree/master/spark-ml
https://hub.docker.com/r/vivekmurugesan/spark-hadoop/ Docker容器中已事先安装Apache Hadoop,并且在伪分布式环境下运行。这可以将大容量文件放进分布式文件系统来测试Spark。通过从分布式文件系统加载记录,可以很轻松地来创建RDD实例。
产能和精度
人们会使用不同的指标来衡量这些工具的好坏。对我来说,精准度和产能是决定性的因素。
大家总是喜欢R多过于Spark机器学习,是因为经验学习曲线。他们最终只能选择在R上采用少量的样本数据,是因为R在大数据量的样本上花了太多时间,而这也影响了整个系统的性能。
对我来说,用少量的样本数据是解决不了问题的,因为少量样本根本代表不了整体(至少在大部分情况下是这样)。所以说,如果你使用了少量样本,就是在精度上选择了妥协。
一旦你抛弃了少量样本,就归结到了生产性能的问题。机器学习的问题本质上就是迭代的问题。如果每次迭代都花费很久的话,那么完工时间就会延长。可是,如果每次迭代只用一点时间的话,那么留给你敲代码的时间就会多一些了。
结论
R语言包含了统计计算的库和像ggplot2这样可视化分析的库,所以它不可能被完全废弃,而且它所带来的挖掘数据和统计汇总的能力是毋庸置疑的。
但是,当遇到在大数据集上构建模型的问题时,我们应该去挖掘一些像Spark ML的工具。Spark也提供R的包,SparkR可以在分布式数据集上应用R。
最好在你的“数据军营”中多放点工具,因为你不知道在“打仗”的时候会遇到什么。因此,是时候从过去的R时代迈入Spark ML的新时代了。
CDA学员免费下载查看报告全文:2026全球数智化人才指数报告【CDA数据科学研究院】.pdf
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在Power BI数据可视化分析中,切片器是连接用户与数据的核心交互工具,其核心价值在于帮助使用者快速筛选目标数据、聚焦分析重点 ...
2026-04-23以数为据,以析促优——数据分析结果指导临床技术改进的实践路径 临床技术是医疗服务的核心载体,其水平直接决定患者诊疗效果、 ...
2026-04-23很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标是所有企业都需要的”“哪些指标是因行业而异的”“北极星指标和 ...
2026-04-23近日,由 CDA 数据科学研究院重磅发布的《2026 全球数智化人才指数报告》,被中国教育科学研究院官方账号正式收录, ...
2026-04-22在数字化时代,客户每一次点击、浏览、下单、咨询等行为,都在传递其潜在需求与决策倾向——这些按时间顺序串联的行为轨迹,构成 ...
2026-04-22数据是数据分析、建模与业务决策的核心基石,而“数据清洗”作为数据预处理的核心环节,是打通数据从“原始杂乱”到“干净可用” ...
2026-04-22 很多数据分析师每天盯着GMV、转化率、DAU等数字看,但当被问到“什么是指标”“指标和维度有什么区别”“如何搭建一套完整的 ...
2026-04-22在数据分析与业务决策中,数据并非静止不变的数值,而是始终处于动态波动之中——股市收盘价的每日涨跌、企业月度销售额的起伏、 ...
2026-04-21在数据分析领域,当研究涉及多个自变量与多个因变量之间的复杂关联时,多变量一般线性分析(Multivariate General Linear Analys ...
2026-04-21很多数据分析师精通描述性统计,能熟练计算均值、中位数、标准差,但当被问到“用500个样本如何推断10万用户的真实满意度”“这 ...
2026-04-21在数据处理与分析的全流程中,日期数据是贯穿业务场景的核心维度之一——无论是业务报表统计、用户行为追踪,还是风控规则落地、 ...
2026-04-20在机器学习建模全流程中,特征工程是连接原始数据与模型效果的关键环节,而特征重要性分析则是特征工程的“灵魂”——它不仅能帮 ...
2026-04-20很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问题, ...
2026-04-20在数字化时代,数据已成为企业决策的核心驱动力,数据分析与数据挖掘作为解锁数据价值的关键手段,广泛应用于互联网、金融、医疗 ...
2026-04-17在数据处理、后端开发、报表生成与自动化脚本中,将 SQL 查询结果转换为字符串是一项高频且实用的操作。无论是拼接多行数据为逗 ...
2026-04-17面对一份上万行的销售明细表,要快速回答“哪个地区卖得最好”“哪款产品增长最快”“不同客户类型的购买力如何”——这些看似复 ...
2026-04-17数据分析师一天的工作,80% 的时间围绕表格结构数据展开。从一张销售明细表到一份完整的分析报告,表格结构数据贯穿始终。但你真 ...
2026-04-16在机器学习无监督学习领域,Kmeans聚类因其原理简洁、计算高效、可扩展性强的优势,成为数据聚类任务中的主流算法,广泛应用于用 ...
2026-04-16在机器学习建模实践中,特征工程是决定模型性能的核心环节之一。面对高维数据集,冗余特征、无关特征不仅会增加模型训练成本、延 ...
2026-04-16在数字化时代,用户是产品的核心资产,用户运营的本质的是通过科学的指标监测、分析与优化,实现“拉新、促活、留存、转化、复购 ...
2026-04-15