MaxCompute支持通过MaxFrame SDK(本地MaxFrame客户端)使用MaxFrame,本文在本地环境中使用MaxFrame的流程。
前提条件
在使用MaxFrame之前,请确保您已完成以下准备:
本地系统中已安装3.7或3.11版本的Python环境,使用其他版本可能会导致错误。
本地系统中已安装pip。如果没有,请访问Python官网获取pip安装指南。
已创建MaxCompute项目,详情请参见创建MaxCompute项目。
安装MaxFrame
在系统的命令行执行窗口(例如Windows的CMD窗口)中,通过pip命令安装MaxFrame客户端。命令如下:
pip install --upgrade maxframe
执行如下命令检查MaxFrame是否安装成功。若无返回值或报错信息,则表示安装成功。
python -c "import maxframe.dataframe as md"
若存在报错信息,请查询系统默认的Python版本并切换至Python 3.7或3.11版本,示例如下:
# 查询系统默认版本 python --version # 将系统默认版本切换为Python 3.7,其中$path/python3.7为已安装的python路径 $path/python3.7 -m pip install setuptools>=3.0
使用MaxFrame
在本地创建一个后缀名为
.py
的PY文件(以test.py
为例),将下述示例代码复制到test.py
中并保存。import os import maxframe.dataframe as md from odps import ODPS from maxframe import new_session # 创建MaxCompute入口 o = 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', ) table = 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()
参数说明:
ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET:需将这些环境变量设置为具备目标MaxCompute项目相关权限的AccessKey ID和AccessKey Secret。您可以进入AccessKey管理页面获取AccessKey ID。
your-default-project:MaxCompute项目名称。您可以登录MaxCompute控制台,在左侧导航栏选择工作区>项目管理进行查看。
your-end-point:目标MaxCompute项目所在地域的Endpoint,详情请参见Endpoint。
进入
test.py
所在的文件路径,运行Python文件。命令示例如下:python test.py
结果验证
执行上述Python代码并查询结果表数据,若结果符合预期,则表示MaxFrame安装成功,且已成功连接MaxCompute集群。
执行Python代码返回如下结果:
b a 0 prefix_value1 1 prefix_value2
在目标MaxCompute项目中运行如下SQL,查询
test_prefix_source_table
表的数据。SELECT * FROM test_prefix_source_table;
返回结果:
+------------+------------+ | b | a | +------------+------------+ | 0 | prefix_value1 | | 1 | prefix_value2 | +------------+------------+