全部產品
Search
文件中心

MaxCompute:快速入門

更新時間:Sep 08, 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