在本地环境中使用MaxFrame

MaxCompute支持您通过标准MaxFrame SDK(本地MaxFrame客户端)的方式使用MaxFrame,本文为您介绍在本地环境中使用MaxFrame的流程。

前提条件

在使用MaxFrame之前,请确保您已完成以下准备:

  • 本地系统中已安装3.7或3.11版本的Python环境。

    说明

    通过其它Python版本使用MaxFrame时,可能会遇到不可预测的错误。请尽可能使用Python 3.7或Python 3.11版本,以保证作业运行的稳定性。

  • 本地系统中已安装pip。部分Python版本中自带pip工具,如果您的Python版本没有预装pip,可访问Python官网获取pip安装指南。

  • 已创建MaxCompute项目,详情请参见创建MaxCompute项目

安装MaxFrame

  1. 在系统的命令行执行窗口(例如Windows的CMD窗口)中,通过pip命令安装MaxFrame客户端。命令如下:

    pip install --upgrade maxframe
  2. 执行如下命令检查MaxFrame是否安装成功。若无返回值或报错信息,则表示安装成功。

    python -c "import maxframe.dataframe as md"
  3. 执行如下命令,查询系统默认的Python版本。

    # 查询系统默认版本
    python --version
  4. 若系统默认的Python版本不是3.7或3.11版本,您可以执行如下命令进行Python版本切换。

    # 将系统默认版本切换为Python 3.7,其中$path/python3.7为已安装的python路径
    $path/python3.7 -m pip install setuptools>=3.0

使用MaxFrame

  1. 在本地创建一个后缀名为.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:需将该环境变量设置为具备目标MaxCompute项目中待操作对象相关MaxCompute权限的AccessKey ID。您可以进入AccessKey管理页面获取AccessKey ID。

    • ALIBABA_CLOUD_ACCESS_KEY_SECRET:需将该环境变量设置为AccessKey ID对应的AccessKey Secret。

    • your-default-project:使用的MaxCompute项目名称。您可以登录MaxCompute控制台,在左侧导航栏选择工作区>项目管理,查看MaxCompute项目名称。

    • your-end-point:目标MaxCompute项目所在地域的Endpoint。详情请参见Endpoint

  2. 进入test.py所在的文件路径,运行Python文件。命令示例如下:

    python test.py

结果验证

执行上述Python代码并查询结果表数据,若结果符合预期,则表示MaxFrame安装成功,且已成功连接MaxCompute集群。

  1. 执行Python代码返回如下结果:

    b           a
    0  prefix_value1
    1  prefix_value2
  2. 在目标MaxCompute项目中运行如下SQL,查询test_prefix_source_table表的数据。

    SELECT * FROM test_prefix_source_table;

    返回结果:

    +------------+------------+
    | b          | a          |
    +------------+------------+
    | 0          | prefix_value1 |
    | 1          | prefix_value2 |
    +------------+------------+