全部产品
Search
文档中心

云原生大数据计算服务 MaxCompute:快速入门

更新时间:Sep 07, 2026

PyODPS 可作为 DataWorks 等数据开发平台中的数据开发节点运行。这些平台内置了 PyODPS 运行环境并提供调度执行能力,无需手动创建 ODPS 入口对象。PyODPS 提供类似 Pandas 的 DataFrame API,支持灵活的数据处理操作。本文以 DataWorks 为例介绍 PyODPS 的使用方法。

前提条件

操作步骤

  1. 新建PyODPS节点

    本文使用DataWorks PyODPS节点开发,详情请参见开发PyODPS 3任务

    • 以PyODPS 3节点作为示例,PyODPS 3节点底层的Python版本为3.7。

    • PyODPS节点获取本地处理的数据量不能超过50 MB,节点运行时占用的内存不能超过1 GB,否则节点任务会被系统中止。因此请避免在PyODPS任务中写入数据量较大的Python处理代码。

    • 在DataWorks上编写代码并进行调试效率较低,为提升运行效率,建议本地安装IDEA进行代码开发。

    1. 新建业务流程

      进入数据开发页面,右键单击业务流程,选择新建业务流程

    2. 新建PyODPS节点

      右键单击新建的业务流程,选择新建节点 > MaxCompute > PyODPS 3,输入节点名称,单击提交

  2. 编辑PyODPS节点

    1. 编写程序代码

      在PyODPS节点的编辑框中输入测试代码。以下是一个完整的使用PyODPS接口执行表操作的示例,更多关于表操作以及SQL操作的方法请参见SQL

      from odps import ODPS
      
      # 初始化ODPS入口对象。在DataWorks的PyODPS节点中无需此步骤,全局变量o已自动可用。
      o = ODPS(
          access_id='<YOUR_ACCESS_ID>',
          secret_access_key='<YOUR_SECRET_ACCESS_KEY>',
          project='<YOUR_PROJECT_NAME>',
          endpoint='<YOUR_PROJECT_ENDPOINT>'
      )
      
      # 创建非分区表my_new_table。
      table = o.create_table('my_new_table', 'num bigint, id string', if_not_exists=True)
      
      # 向非分区表my_new_table中插入数据。
      records = [[111, 'aaa'],
                 [222, 'bbb'],
                 [333, 'ccc'],
                 [444, '中文']]
      o.write_table(table, records)
      
      # 读取非分区表my_new_table中的数据。
      for record in o.read_table(table):
          print(record[0], record[1])
      
      # 以运行SQL的方式读取表中的数据。
      with o.execute_sql('select * from my_new_table;', hints={'odps.sql.allow.fullscan': 'true'}).open_reader() as reader:
          for record in reader:
              print(record[0], record[1])
      
      # 删除表以清除资源。
      table.drop()
    2. 运行代码

      完成编辑后,单击运行图标。运行结束后,在下方的运行日志中可看到运行结果。输出如下日志代表执行成功。

      2023-07-21 15:06:41 INFO ========================================================
      Executing user script with PyODPS 0.11.2.3
      Tunnel session created: <TableUploadSession xxx                                          >
      Tunnel session created: <TableDownloadSession xxx                                        >
      111 aaa
      222 bbb
      333 ccc
      444 中文
      Tunnel session created: <InstanceDownloadSession id=xxx          project_name=xxx                              >
      111 aaa
      222 bbb
      333 ccc
      444 中文
      2023-07-21 15:06:49 INFO ========================================================
      2023-07-21 15:06:49 INFO Exit code of the Shell command 0
      2023-07-21 15:06:49 INFO --- Invocation of Shell command completed ---
      2023-07-21 15:06:49 INFO Shell run successfully!
      2023-07-21 15:06:49 INFO Current task status: FINISH
      2023-07-21 15:06:49 INFO Cost time is: 7.507s
      /home/admin/alisatasknode/taskinfo/xxx              xxx        .log-END-EOF