Mars学习笔记(一)

简介: 对阿里开源的、基于Python的大规模计算框架Mars的学习笔记系列。

一、Mars简介

Mars是阿里开源的、基于Python的大规模计算框架。简单理解,Mars是numpy、pandas、scikit-learn、statsmodels、XGBoost等数据处理、机器学习中常用Python库(只能单机使用)的分布式版本合集。同时,Mars也是基于张量的,与TensorFlow、PyTorch也有很好的交互性。下图是官网中展示的Mars架构概览图。
Mars_Architecture.png

二、安装部署

Mars既支持在单机中安装,也支持在集群中安装。在单机上安装,Mars支持在Windows、MacOS或Linux系统上安装,只需要在联网环境下执行如下命令即可。

pip install pymars

下图是笔者在Windows10系统通过Anaconda3安装的3.8版本Python环境中安装Mars的截图,可以看到成功安装了0.9.0版本的Mars。
Mars_Install_1.png
但是在Jupyter Notebook中导入mars.tensor包时发生报错,报错信息为“ImportError: DLL load failed while importing \_arpack: 找不到指定的程序。”如下两图所示,
Mars_Install_2.png
Mars_Install_3.png
在百度中搜索此报错信息,发现大部分帖子都说是与Anaconda自带的scipy包有关,再次回看上述报错发生的位置,发现也是与scipy包有关,如下图所示,
Mars_Install_4.png
按照一篇帖子中提到的方法,先卸载Anaconda自带的scipy包,再从豆瓣镜像中安装scipy包,即可解决此问题。
如下图所示,Anaconda自带的scipy版本为1.6.2。
Mars_Install_5.png
依次执行如下命令,先卸载Anaconda自带的scipy包,再从豆瓣镜像中安装scipy包,

pip uninstall scipy
pip install scipy -i https://pypi.douban.com/simple

卸载及安装过程如下图所示,
Mars_Install_6_1.png
成功安装1.9.1版本scipy包之后,重启此Jupyter Notebook的内核,再次导入mars.tensor包,即可正常执行Mars。
在集群中安装,Mars既支持在集群中安装部署Mars集群,也支持在现有的Ray、Kubernetes、YARN集群中安装部署,使Mars可以快速灵活的在集群中完成安装部署,并与其它已部署集群框架联合,快速集成进现有业务场景中使用。Mars在各类集群中的安装部署步骤,官方文档中已经作了详细的介绍,这里先不展开,之后在不同类型集群中具体使用时再作介绍,先贴出官方文档中有关安装部分的地址,以供大家参考。
https://docs.pymars.org/zh_CN/latest/installation/index.html

三、在单机上的使用

Mars在使用上充分尊重了Python用户对Numpy、Pandas等包的现有使用习惯,无需更改Numpy、Pandas中的语法,只需更改包的别名,即把Numpy的np改成Mars的mt,把Pandas的pd改成Mars的md,就可以使用原有的代码逻辑,借助Mars框架,对海量数据进行大规模计算了,极大的降低了Mars的学习成本,真正实现了开箱即用的效果。
下图是在使用2亿条二维随机数组计算圆周率的示例中,使用Numpy和Mars的代码对比,可以看到除了更换一下包的别名,其余代码均未更改;而且即便是在单机的环境下运行,在处理相同数据量的情况下,Mars的代码执行时间也远小于Numpy的执行时间,性能上也得到了较大的提升。
Mars_Run_1.png
不过这个需要注意一点,Mars是通过执行session来执行大规模数据计算操作的,所以在执行计算代码之前,最好先使用mars.new_session()语句提前创建一个session,因为创建一个新的session也是会花费一些时间的,如下图所示。
Mars_Run_2.png
在使用Pandas做数据处理中,最方便的就是使用DataFrame格式,Mars中也同样保留了Pandas中DataFrame语法,只需要把Pandas的pd改成Mars的md即可,而且Mars还开发了将Pandas的DataFrame快速转换为Mars的DataFrame的方法,实现了Pandas向Mars完美扩展,代码如下图所示。
Mars_Run_3.png

四、后续

使用Mars在国产中标麒麟操作系统搭建的集群中对海量数据进行分布式计算、机器学习模型和深度学习模型,对接国产达梦数据库的数据计算业务等学习笔记,在整理好之后会陆续更新,敬请期待。

相关文章
|
SQL 机器学习/深度学习 Java
用Python进行实时计算——PyFlink快速入门
Flink 1.9.0及更高版本支持Python,也就是PyFlink。 在最新版本的Flink 1.10中,PyFlink支持Python用户定义的函数,使您能够在Table API和SQL中注册和使用这些函数。但是,听完所有这些后,您可能仍然想知道PyFlink的架构到底是什么?作为PyFlink的快速指南,本文将回答这些问题。
2624 0
用Python进行实时计算——PyFlink快速入门
|
1月前
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
1月前
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
49 1
|
1月前
|
人工智能 分布式计算 数据处理
有奖评测,基于分布式 Python 计算服务 MaxFrame 进行数据处理
阿里云MaxCompute MaxFrame推出分布式Python计算服务MaxFrame评测活动,助力开发者高效完成大规模数据处理、可视化探索及ML/AI开发。活动时间为2024年12月17日至2025年1月31日,参与者需体验MaxFrame并发布评测文章,有机会赢取精美礼品。
|
2月前
|
机器学习/深度学习 分布式计算 数据挖掘
MaxFrame 性能评测:阿里云MaxCompute上的分布式Pandas引擎
MaxFrame是一款兼容Pandas API的分布式数据分析工具,基于MaxCompute平台,极大提升了大规模数据处理效率。其核心优势在于结合了Pandas的易用性和MaxCompute的分布式计算能力,无需学习新编程模型即可处理海量数据。性能测试显示,在涉及`groupby`和`merge`等复杂操作时,MaxFrame相比本地Pandas有显著性能提升,最高可达9倍。适用于大规模数据分析、数据清洗、预处理及机器学习特征工程等场景。尽管存在网络延迟和资源消耗等问题,MaxFrame仍是处理TB级甚至PB级数据的理想选择。
66 4
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
111 2
|
2月前
|
分布式计算 数据处理 MaxCompute
分布式Python计算服务MaxFrame使用心得
大家好,我是V哥。MaxFrame是阿里云自研的分布式计算框架,专为Python开发者设计,支持大规模数据处理和AI模型开发。MaxFrame适用于快速进行数据处理、数据科学和交互式探索,支持按量付费及包年包月两种计费方式。通过两个案例(金融数据清洗和大语言模型预处理),展示了MaxFrame在大规模数据处理中的显著性能提升。安装MaxFrame客户端只需简单几步,轻松开启高效数据处理之旅。欢迎关注威哥爱编程,一起交流技术心得!
|
6月前
|
分布式计算 大数据 Java
Scala 入门指南:从零开始的大数据开发
Scala 入门指南:从零开始的大数据开发
|
算法 图计算
TuGraph Analytics图计算快速上手之K-core算法
K-Core算法是一种用来在图中找出符合指定核心度的紧密关联的子图结构,在K-Core的结果子图中,每个顶点至少具有k的度数,且所有顶点都至少与该子图中的 k 个其他节点相连。K-Core通常用来对一个图进行子图划分,通过去除不重要的顶点,将符合逾期的子图暴露出来进行进一步分析。K-Core图算法常用来识别和提取图中的紧密连通群组,因具有较低的时间复杂度(线性)及较好的直观可解释性,广泛应用于金融风控、社交网络和生物学等研究领域。
|
SQL Java 数据挖掘
Flink 必知必会经典课程6:PyFlink 快速上手
本文介绍了PyFlink项目的目标和发展历程,以及PyFlink目前的核心功能,包括Python Table API、Python UDF、向量化Python UDF、Python UDF Metrics、PyFlink依赖管理和Python UDF执行优化,同时也针对功能展示了相关demo。
Flink 必知必会经典课程6:PyFlink 快速上手