MaxCompute MaxFrame | 分布式Python计算服务MaxFrame(完整操作版)

MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)

  • 前言
  • MaxCompute MaxFrame
  • 服务开通
    • 开通 MaxCompute 服务
    • 开通 DataWorks 服务
  • 资源准备
    • 创建 DataWorks 工作空间
    • 创建 MaxCompute 项目
    • 创建MaxCompute数据源
    • 绑定数据源或集群
    • 创建MaxCompute节点
  • 在DataWorks中使用MaxFrame
  • 分布式Pandas 处理
  • 总的来说

前言

在当今数字化迅猛发展的时代,数据信息的保存与数据分析对企业的决策和工作方向具有极为重要的指导价值。通过企业数据分析,企业能够精准统计出自身的成本投入、经营收益以及利润等重要数据。这些数据犹如企业运营的“晴雨表”,为企业后续的决策提供了坚实可靠的依据,助力企业在市场竞争中优化经营策略,从而实现更大的价值创造。
今天我们要讲的正是可以帮助企业实现数据保存于数据分析的一款分布式计算框架MaxCompute MaxFrame,那么什么是MaxCompute MaxFrame?

MaxCompute MaxFrame

在开始测评之前,先了解一下什么是MaxCompute MaxFrame?
以下是来自官网的介绍:【MaxFrame是由阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口且自动进行分布式计算。您可利用MaxCompute的海量计算资源及数据进行大规模数据处理、可视化数据探索分析以及科学计算、ML/AI开发等工作。】关于MaxCompute MaxFrame 的更多内容你可以直接在官网中详细了解,包括产品优势、产品功能、应用场景等,这里我主要是测评 MaxCompute MaxFrame 的操作体验,因此对于 MaxCompute MaxFrame 的详细介绍大家可以移步官网:https://www.aliyun.com/product/bigdata/odps/maxframe
在这里插入图片描述
MaxCompute MaxFrame,那么下面就开始今天的操作吧。

服务开通

在开始测试 MaxCompute MaxFrame 的功能前,首先需要开通 MaxCompute和DataWorks 服务。

开通 MaxCompute 服务

对于全新的、此前未开通过MaxCompute的阿里云账号,阿里云在部分地域提供了免费的MaxCompute资源包,您可以先申请免费资源包体验试用,体验地址:https://free.aliyun.com/ 在免费试用页面输入你想要试用的服务,比如输入 MaxCompute
在这里插入图片描述
如果你的阿里云账号没有免费试用资格,那么你只能通过 阿里云MaxCompute产品首页 :https://www.aliyun.com/product/maxcompute 单击【立即购买】,选择【按量付费标准版】开通MaxCompute服务
在这里插入图片描述
这里我的账号在当前北京地域下已经开通过 MaxCompute 服务,因此这里才有这个提示,正常情况下的话你直接开通即可
在这里插入图片描述
开通完 MaxCompute 服务之后,我们还需要开通 DataWorks 服务。

开通 DataWorks 服务

同样的,对于全新的、此前未开通过DataWorks 的阿里云账号,阿里云在部分地域提供了免费的DataWorks资源包,您可以先申请免费资源包体验试用。免费试用地址同上,在免费试用界面输入 DataWorks 可以查看试用资格
在这里插入图片描述
如果你的阿里云账号没有试用资格的话,你可以到 DataWorks 官网,官网地址: https://www.aliyun.com/product/bigdata/ide
在这里插入图片描述
点击【立即购买】选择需要开通 DataWorks 服务的地域以及 【按量付费】计费方式后开通即可,这里我已经开通过按量付费了
在这里插入图片描述
资源准备完成之后,下面就开始创建资源用于后面的操作。

资源准备

在我们开通了MaxCompute和DataWorks 服务 之后,下面我们就可以创建资源了,下面按照步骤创建资源内容。

创建 DataWorks 工作空间

登录DataWorks控制台 ,在控制台顶部菜单栏切换所需地域,单击左侧导航栏的【工作空间】,进入工作空间列表页面,点击【创建工作空间】,这里我已经创建好了工作空间 User_dataworks
在这里插入图片描述
输入工作空间名称,定义工作空间模式,即工作空间的生产环境和开发环境是否隔离等参数,根据实际情况选择即可
在这里插入图片描述

创建 MaxCompute 项目

登录MaxCompute控制台,在左上角选择地域,选择左侧菜单【项目管理】,点击【新建项目】,这里为了区分后面的测试和生产环境,需要创建两个 MaxCompute 项目空间,这里我已经创建好了
在这里插入图片描述
在 MaxCompute 新增项目页面,需要输入项目名称,选择 计算资源付费类型、默认Quota 等信息后,点击确定即可完成 MaxCompute 创建。
在这里插入图片描述

创建MaxCompute数据源

完成上述操作之后,回到 DataWorks控制台 ,在 DataWorks 控制台 选择查看 【工作空间】列表页面,点击工作空间名称,进入工作空间详情页面,在工作空间详情页面点击【数据源】-【数据源列表】可以看到这里我已经创建成功的数据源
在这里插入图片描述
点击【新增数据源】,选择 MaxCompute,根据界面指引创建数据源
在这里插入图片描述
选择 MaxCompute 在新增 MaxCompute 数据源页面,我们需要输入 数据源名称 ,所属云账号、地域等信息,可以选择我们刚才创建好的 MaxCompute项目名称
在这里插入图片描述
点击【完成创建】之后,创建完成MaxCompute 数据源,就可以返回【数据源列表】查看已经创建好的数据源信息了。

绑定数据源或集群

等待MaxCompute 数据源创建成功之后, 登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的【数据开发与治理】 - 【数据开发】,在下拉框中选择对应工作空间后单击【进入数据开发】
在这里插入图片描述
在左侧导航栏单击【数据源】,进入数据源或集群绑定页面,您可通过名称搜索找到目标数据源或集群进行绑定操作。绑定后,便可基于数据源的连接信息读取该数据源的数据,进行相关开发操作。如果你找不到具体的 数据源 绑定操作入口,又不想去按照官方文档说的那样去个人设置里面找,这里可以直接点击 绑定 进入到绑定页面,在绑定页面选择资源绑定,这里我已经绑定过了
在这里插入图片描述
在开发 PyODPS 3 任务之前,先来简单说一下PyODPS 3 任务。 DataWorks为我们提供PyODPS 3节点,我们可以在该节点中直接使用Python代码编写MaxCompute作业,并进行作业的周期性调度。开始之前需要先创建一个 PyODPS 3节点。

创建MaxCompute节点

登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的【数据开发与治理】 > 【数据开发】,在下拉框中选择对应工作空间后单击【进入数据开发】,在 数据开发页面选择【新建】>【MaxCompute】 > 【PyODPS 3 】
在这里插入图片描述
在弹框中配置节点的名称,选择路径,完成后单击确认,完成MaxCompute节点创建操作,后续您即可在节点中进行对应MaxCompute任务开发与配置
在这里插入图片描述
节点创建成功之后,可以在数据开发页面看到节点信息
在这里插入图片描述
以上的资源准备好了之后,我们就可以使用DataWorks的PyODPS 3节点开发和运行MaxFrame作业。

在DataWorks中使用MaxFrame

在开始使用MaxFrame之前,先来简单介绍一下。 DataWorks为MaxCompute项目提供任务调度能力,且已在PyODPS 3节点内置了MaxFrame,我们可直接使用DataWorks的PyODPS 3节点开发和运行MaxFrame作业。PyODPS 3内置了MaxCompute用户和项目信息,因此我们可以直接创建MaxFrame会话,复制代码放入创建的 PyODPS 3节点 的 命令操作台
在这里插入图片描述
代码示例如下

import maxframe.dataframe as md
from maxframe import new_session
from maxframe.config import options
options.sql.enable_mcqa = Falsetable = o.create_table("test_source_table", "a string, b bigint", if_not_exists=True)
with table.open_writer() as writer:writer.write([["value1", 0],["value2", 1],])# 创建MaxFrame session
session = new_session(o)df = md.read_odps_table("test_source_table",index_col="b")
df["a"] = "prefix_" + df["a"]# 打印dataframe数据
print(df.execute().fetch())# MaxFrame DataFrame数据写入MaxCompute表
md.to_odps_table(df, "test_prefix_source_table").execute()# 销毁 maxframe session
session.destroy()

在数据开发页面命令控制台上侧点击【执行】按钮,执行Python代码可以看到如下的返回结果
在这里插入图片描述
此结果表示MaxFrame安装成功,且已成功连接MaxCompute集群。在目标MaxCompute项目中运行如下SQL,查询test_prefix_source_table表的数据,新建 ODPS SQL 节点
在这里插入图片描述
点击【确认】完成 新建 ODPS SQL 节点 新建 成功之后,在我们新建的 User_sql2 节点输入查询语句

SELECT * FROM test_prefix_source_table;

点击【执行】可以看到sql 查询的结果数据
在这里插入图片描述
到这里就说明我们的 MaxFrame 以及所有需要的服务和资源都可以正常运行,下面来使用与Pandas相同的API来分析数据。

分布式Pandas 处理

在基于MaxFrame实现分布式Pandas处理 之前,首先需要准备一些调用过程中需要用到的ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET 、your-default-project、your-end-point。 这里 进入AccessKey管理页面获取AccessKey ID以及对应的AccessKey Secret
在这里插入图片描述
复制 后备用。登录MaxCompute控制台,在左侧导航栏选择【工作区】-【项目管理】,查看MaxCompute项目名称
在这里插入图片描述
在 Endpoint 页面找到当前地域对应的 Endpoint 并复制,
在这里插入图片描述
替换掉示例代码中对应的上述获取的账号信息,这里给出的是示例代码,替换后的代码这里不方便给出哈

from odps import ODPS
from maxframe.session import new_session
import maxframe.dataframe as md
import pandas as pd
import oso = ODPS(# 确保 ALIBABA_CLOUD_ACCESS_KEY_ID 环境变量设置为用户 Access Key ID,# ALIBABA_CLOUD_ACCESS_KEY_SECRET 环境变量设置为用户 Access Key Secret,# 不建议直接使用AccessKey ID和 AccessKey Secret字符串。os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),project='your-default-project',endpoint='your-end-point',
)data_sets = [{"table_name": "product","table_schema" : "index bigint, product_id bigint, product_name string, current_price bigint","source_type": "records","records" : [[1, 100, 'Nokia', 1000],[2, 200, 'Apple', 5000],[3, 300, 'Samsung', 9000]],
},
{"table_name" : "sales","table_schema" : "index bigint, sale_id bigint, product_id bigint, user_id bigint, year bigint, quantity bigint, price bigint","source_type": "records","records" : [[1, 1, 100, 101, 2008, 10, 5000],[2, 2, 300, 101, 2009, 7, 4000],[3, 4, 100, 102, 2011, 9, 4000],[4, 5, 200, 102, 2013, 6, 6000],[5, 8, 300, 102, 2015, 10, 9000],[6, 9, 100, 102, 2015, 6, 2000]],"lifecycle": 5
}]def prepare_data(o: ODPS, data_sets, suffix="", drop_if_exists=False):for index, data in enumerate(data_sets):table_name = data.get("table_name")table_schema = data.get("table_schema")source_type = data.get("source_type")if not table_name or not table_schema or not source_type:raise ValueError(f"Dataset at index {index} is missing one or more required keys: 'table_name', 'table_schema', or 'source_type'.")lifecycle = data.get("lifecycle", 5)table_name += suffixprint(f"Processing {table_name}...")if drop_if_exists:print(f"Deleting {table_name}...")o.delete_table(table_name, if_exists=True)o.create_table(name=table_name, table_schema=table_schema, lifecycle=lifecycle, if_not_exists=True)if source_type == "local_file":file_path = data.get("file")if not file_path:raise ValueError(f"Dataset at index {index} with source_type 'local_file' is missing the 'file' key.")sep = data.get("sep", ",")pd_df = pd.read_csv(file_path, sep=sep)ODPSDataFrame(pd_df).persist(table_name, drop_table=True)elif source_type == 'records':records = data.get("records")if not records:raise ValueError(f"Dataset at index {index} with source_type 'records' is missing the 'records' key.")with o.get_table(table_name).open_writer() as writer:writer.write(records)else:raise ValueError(f"Unknown data set source_type: {source_type}")print(f"Processed {table_name} Done")prepare_data(o, data_sets, "_maxframe_demo", True)

这里我们新建 PyODPS 3节点 User_node2 来执行替换了密钥信息后的上述示例代码,等待运行成功
在这里插入图片描述
查询sales_maxframe_demo表和product_maxframe_demo表的数据,SQL命令如下

--查询sales_maxframe_demo表
SELECT * FROM sales_maxframe_demo;

在这里插入图片描述

--查询product_maxframe_demo表数据
SELECT * FROM product_maxframe_demo;

在这里插入图片描述
这里需要说明一下,我没有执行结束,在执行的过程中,一直执行超时,不知道什么原因


Executing user script with PyODPS 0.12.1 (wrapper version: 0.12.1spawn)Processing product_maxframe_demo...
Deleting product_maxframe_demo.../opt/taobao/tbdpapp/pyodps/pyodpswrapper.py:1191: UserWarning: Global variable __doc__ you are about to set conflicts with pyodpswrapper or builtin variables. It might not be runnable with multiprocessing."It might not be runnable with multiprocessing." % key
2025-01-07 20:34:40,348 WARNING:urllib3.connectionpool:Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f48ac8fb198>, 'Connection to service.cn-beijing.maxcompute.aliyun.com timed out. (connect timeout=120)')': /api/tenants?curr_project=user_project_dev

总的来说

MaxFrame可以在分布式环境下使用与Pandas相同的API来分析数据,通过MaxFrame,您能够以高于开源Pandas数十倍的性能在MaxCompute上快速完成数据分析和计算工作。MaxFrame兼容Pandas接口且自动进行分布式处理,在保证强大数据处理能力的同时,可以大幅度提高数据处理规模及计算效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97112.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[机械结构设计-48]:机械工程师的岗位要求

机械工程师的岗位要求涵盖学历、专业知识、技能水平、工作经验、软件应用、综合能力、沟通协作、职业规范与持续学习等多个维度&#xff0c;具体如下&#xff1a;学历要求&#xff1a;通常要求本科及以上学历&#xff0c;专业背景为机械工程、自动化、材料工程等相关专业。部分…

3446. 按对角线进行矩阵排序

Problem: 3446. 按对角线进行矩阵排序 文章目录思路解题过程复杂度Code思路 发现每条对角线行号减列号是一个定值。 设ki-jn&#xff0c;i0,jn-1时&#xff0c;k1&#xff1b;im-1&#xff0c;j0时&#xff0c;kmn-1。 解题过程 遍历对角线&#xff0c;找出最小和最大列&#x…

疯狂星期四文案网第53天运营日记

网站运营第53天&#xff0c;点击观站&#xff1a; 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 今日访问量 必应的关键词排名还可以&#xff0c;自然流量过来的创新高了&#xff0c;这周没有掘金大佬给我宣传&#xff0c;全是自然流量过来的 今日…

【Docker基础】Docker-compose进阶配置:环境变量与配置隔离完全指南

目录 前言 1 Docker-compose环境变量基础 1.1 环境变量的作用与优势 1.2 环境变量的作用范围 2 .env文件的核心用法 2.1 .env文件基础语法 2.2 变量引用与替换 2.3 多环境配置策略 3 高级配置技巧 3.1 环境变量优先级 3.2 条件配置与模板 3.3 安全实践 4 案例&…

习题答案 |《数据结构(C语言版第4版)》人民邮电出版社,李云清杨庆红等,2023年8月

李云清杨庆红等&#xff0c;《数据结构&#xff08;C语言版第4版&#xff09;》&#xff0c;人民邮电出版社&#xff0c;2023年8月 上海电力大学2025年专升本上岸学长经验分享&#xff08;普通考生&#xff09;-免费赠送25年电力考试真题&#xff01;&#xff01;&#xff01;…

Chrome紧急修复AI发现的ANGLE高危漏洞CVE-2025-9478

近日&#xff0c;谷歌为Chrome稳定版发布关键安全更新&#xff0c;修复了ANGLE&#xff08;支撑WebGL及其他渲染任务的图形引擎&#xff09;中的释放后重用&#xff08;use-after-free&#xff09;漏洞。该漏洞编号为CVE-2025-9478&#xff0c;于2025年8月11日被发现——发现者…

8.28作业

1.提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数#include <iostream>using namespace std;int main() {string buf;cout << "输入字符串" << endl;getline(cin,buf);int capital 0,lower…

copy-to-clipboard 网站复制粘贴 三分钟入门

目录 一、介绍和安装 &#xff08;1&#xff09;介绍 &#xff08;2&#xff09;安装 二、示例 &#xff08;1&#xff09;示例效果演示 &#xff08;2&#xff09;示例视频演示 &#xff08;3&#xff09;示例代码 一、介绍和安装 &#xff08;1&#xff09;介绍 copy…

Python 多版本环境治理理念驱动的系统架构设计——三维治理、四级隔离、五项自治 原则(路径治理升级修订 V 2.0 版)

Python 多版本环境治理理念驱动的系统架构设计 ——三维治理、四级隔离、五项自治 原则&#xff08;路径治理升级修订 V 2.0 版&#xff09; Python 多版本环境治理理念驱动的系统架构设计&#xff1a;三维治理、四级隔离、五项自治 原则 V1.0 版 &#x1f4da; 系列文章导航 …

Ubuntu Server 快速部署长安链:基于 Go 的智能合约实现商品溯源

文章目录简介智能合约语言智能合约上链管理开发环境准备长安链官网官方源码仓库官方文档官方 Docker 镜像仓库部署管理平台登录管理平台快速生成证书新建区块链链配置文件订阅长安链项目编译打包&#xff08;商品溯源示例&#xff09;部署合约编辑合约上链管理生产商品运输商品…

德克西尔氢气探测器:工业安全守护核心

​ ​引言&#xff1a;氢气泄漏隐患下&#xff0c;谁来守住工业安全防线&#xff1f; 2024年某化工园区因氢气管道阀门老化&#xff0c;泄漏气体未及时被检测&#xff0c;遇静电引发小型爆炸&#xff0c;造成设备损毁与停产损失——这类事故在新能源、化工、冶金等依赖氢气的…

电商高并发稳赢指南:ZKmall开源商城微服务架构的实战拆解

在电商行业&#xff0c;高并发场景&#xff08;如秒杀活动、节日大促&#xff09;对系统稳定性的考验尤为严峻。据阿里云 2024 年电商技术白皮书显示&#xff0c;采用微服务架构的电商系统在峰值流量下的稳定性比单体架构高 4.2 倍&#xff0c;故障恢复时间缩短 75%。ZKmall 开…

搜维尔科技核心产品矩阵涵盖从硬件感知到软件渲染的全产品供应链

在虚拟现实&#xff08;VR&#xff09;技术加速渗透至人因工程、生物力学、拟态环境及XR仿真现实等多学科交叉领域的背景下&#xff0c;我司与恒挚科技展开交流合作&#xff0c;双方将依托我司在动作捕捉、力反馈设备及实时渲染软件等领域的全栈技术积累&#xff0c;共同开拓沉…

Python 前后端框架实战:从选型到搭建简易全栈应用

在全栈开发领域&#xff0c;Python凭借丰富的前后端框架生态&#xff0c;成为开发者快速构建应用的优选。本文将聚焦Python主流前后端框架的选型对比&#xff0c;并以“Flask&#xff08;后端&#xff09; Vue.js&#xff08;前端&#xff09;”组合为例&#xff0c;带您实战搭…

多版本并发控制MVCC

MVCC&#xff08;Multi-Version Concurrency Control&#xff0c;多版本并发控制&#xff09;。是一个在数据库管理系统中用于处理并发控制的核心技术。理解它对于深入掌握数据库&#xff08;尤其是 InnoDB、PostgreSQL 等&#xff09;的工作原理至关重要。1. 什么是 MVCC&…

嵌入式第三十七天(TCP补充,应用层协议(HTTP))

一.TCP机制二.HTTP协议1.2.3.4.5.6.7.8.#ifndef _HEAD_H #define _HEAD_H#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/socket.h>#endif#include "head.h"…

Elasticsearch核心配置详解与优化

Elasticsearch 的核心配置文件主要用于控制节点行为、集群设置、资源分配和日志记录等关键功能。主要配置文件通常位于 ES_HOME/config 目录下&#xff0c;以下是三个最核心的配置文件及其详细说明&#xff1a; 1. elasticsearch.yml 核心集群与节点配置 这是最重要的配置文件…

机器学习框架下:金价近3400关口波动,AI量化模型对PCE数据的动态监测与趋势预测

摘要&#xff1a;本文通过AI多因子模型&#xff0c;结合宏观经济数据、政策动态及市场情绪因子&#xff0c;分析黄金价格波动机制及关键驱动要素。基于量化策略与自然语言处理技术&#xff0c;对美联储独立性争议、美债收益率曲线形态及PCE通胀数据等核心变量进行动态建模&…

【Redis#8】Redis 数据结构 -- Zset 类型

一、引言 定义&#xff1a;有序集合&#xff08;Zset&#xff09;是Redis中的一种数据结构&#xff0c;它结合了哈希表和跳跃列表的特性。每个 member 都有一个分数(score)&#xff0c;根据这个分数进行排序。 特点&#xff1a; member 不能重复&#xff0c;但分数可以相同&…

Postman 模拟mcp tool调用过程

文章目录 初始化调用 mcp server使用modelcontextprotocol 的java sdk编写 初始化 1.网页访问http://localhost:8090/sse,此页面保持开启,会不断接收到sse事件. 会返回一个endpoint,例如/mcp/message?sessionId111 2.初始化请求,postman发送post请求 url:http://localhost:…