文档

准备工作

更新时间:

MaxCompute支持通过标准MaxFrame SDK(本地MaxFrame客户端)、MaxCompute Notebook及DataWorks节点三种方式使用MaxFrame,本文为您介绍使用MaxFrame前需要准备的运行环境。

前提条件

  • 已安装3.6及以上版本的Python环境。

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

步骤一:申请开通及使用MaxFrame

目前MaxFrame处于邀测阶段,您可按照以下步骤申请开通MaxFrame、并领取抵扣资源:

  1. 单击MaxFrame_分布式计算框架,您可以:

    • 查看MaxFrame相关介绍。

    • 单击免费测试,在MaxFrame免费试用申请表页面填写相关信息即可申请试用MaxFrame,我们将在2~3个工作日内为您开通。

    • 单击企业咨询,加入MaxFrame官方支持群,进行答疑及获取相关支持。

  2. 领取MaxFrame试用特惠包:在MaxFrame邀测期间,每个租户可在购买页面领取5000CU的免费资源,用于抵扣MaxFrame计算资源费用。

步骤二:安装和访问MaxFrame

MaxCompute项目默认启用了MaxFrame,您无需手动开启。

您可通过本地MaxFrame客户端、DataWorks的MaxFrame节点或MaxCompute Notebook三种方式访问MaxFrame。

示例说明本文以创建一个MaxCompute数据表,利用MaxFrame进行开发处理,并将结果存储到另一个MaxCompute表中为例,为您介绍主要操作流程。

通过本地客户端访问MaxFrame

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

    pip install maxframe
  2. 创建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

通过DataWorks访问MaxFrame

DataWorks为MaxCompute项目提供任务调度能力,且已在PyODPS 3节点内置了MaxFrame,您可以直接使用DataWorks的PyODPS 3节点开发和运行MaxFrame作业。

  1. 创建PyODPS 3节点。

    您可以进入DataWorks的数据开发页面创建PyODPS 3节点,详情请参见开发PyODPS 3任务

  2. 创建MaxFrame会话。

    PyODPS 3内置了MaxCompute用户和项目信息,因此您可以直接创建MaxFrame会话。代码示例如下:

    import maxframe.dataframe as md
    from maxframe import new_session
    from maxframe.config import options
    options.sql.enable_mcqa = False
    
    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()
    

通过MaxCompute Notebook访问MaxFrame

MaxCompute Notebook已内置MaxFrame和MaxCompute账号认证信息,您无需提供AK和SK,即可直接连接MaxCompute项目并进行开发。

创建MaxFrame会话的代码示例如下:

import maxframe.dataframe as md
from odps import ODPS
from maxframe import new_session
from maxframe.config import options
options.sql.enable_mcqa = False


# create MaxCompute entrance object
o = ODPS(
    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()

步骤三:结果验证

执行上述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 |
    +------------+------------+
  • 本页导读 (1)