全部產品
Search
文件中心

MaxCompute:建立PyODPS 2節點

更新時間:Jun 19, 2024

DataWorks提供PyODPS 2節點類型,您可以在DataWorks上通過PyODPS文法進行PyODPS任務開發,PyODPS整合了MaxCompute的Python SDK。支援您在DataWorks的PyODPS 2節點上直接編輯Python代碼,操作MaxCompute。

注意事項

  • DataWorks支援可視化建立Python資源,如果您需要在PyODPS節點中調用第三方包,請使用獨享調度資源群組並通過營運助手進行安裝。

  • DataWorks營運助手中安裝的Python第三方包,僅支援在DataWorks獨享調度資源群組本地運行PyODPS任務代碼時引用,如果需要在MaxCompute的Python UDF中引用Python第三方包,詳情請參見UDF樣本:Python UDF使用第三方包

  • 如果您的PyODPS任務需要訪問特殊的網路環境(如VPC網路或IDC網路中的資料來源或服務等),請使用獨享調度資源群組,並參考網路連通解決方案打通獨享資源群組與目標環境的網路連通。

  • PyODPS文法及更多資訊請參見PyODPS文檔

  • PyODPS節點分為PyODPS 2和PyODPS 3兩種,二者的區別在於底層Python語言版本不同。PyODPS 2底層Python語言版本為Python 2,PyODPS 3底層Python語言版本為Python 3,請您根據實際使用的Python語言版本建立PyODPS節點。

  • 若通過PyODPS節點執行SQL無法正常產生資料血緣關係,即資料血緣在資料地圖無法正常展示,您可在任務代碼處通過手動設定DataWorks調度啟動並執行相關參數解決。查看資料血緣,詳情請參見查看血緣資訊;參數設定,詳情請參見設定運行參數hints。任務運行時所需參數可參考如下代碼擷取。

    import os
    ...
    # get DataWorks sheduler runtime parameters
    skynet_hints = {}
    for k, v in os.environ.items():
        if k.startswith('SKYNET_'):
            skynet_hints[k] = v
    ...
    # setting hints while submiting a task
    o.execute_sql('INSERT OVERWRITE TABLE XXXX SELECT * FROM YYYY WHERE ***', hints=skynet_hints)
    ...
  • Pyodps節點的輸出日誌最大支援4MB。建議您盡量避免在日誌中直接輸出大量的資料結果。相反,建議您多輸出警示日誌和正常進度的日誌,以提供更有價值的資訊。

使用限制

  • DataWorks建議您在PyODPS節點內擷取到本地處理的資料不超過50 MB,該操作受限於DataWorks執行資源的不同規格(包括公用調度資源群組和獨享調度資源群組),處理的本機資料過多並超出作業系統閾值時可能發生OOM(Got killed)錯誤。請避免在PyODPS節點中寫入過多的資料處理代碼。詳情請參見高效使用PyODPS最佳實務
  • 如果您發現有Got killed報錯,即表明記憶體使用量超限,進程被中止。因此,請盡量避免本地的資料操作。通過PyODPS發起的SQL和DataFrame任務(除to_pandas外)不受此限制。
  • 非自訂函數代碼可以使用平台預裝的Numpy和Pandas。不支援其他帶有二進位代碼的三方包。
  • 由於相容性原因,在DataWorks中,options.tunnel.use_instance_tunnel預設設定為False。如果需要全域開啟instance tunnel,需要手動將該值設定為True。
  • PyODPS 2節點底層的Python版本為2.7。
更多PyODPS節點使用與限制說明,請參見使用限制

使用流程

流程中關於PyODPS 2的使用樣本請參見開發PyODPS 3任務
操作說明
建立PyODPS 2節點DataWorks提供PyODPS 2節點類型,整合了MaxCompute的Python SDK。您可以建立PyODPS節點直接編輯Python代碼。
開發PyODPS 3任務DataWorks的PyODPS 2節點中,將會包含一個全域的變數odpso,即ODPS入口,您無需手動定義ODPS入口。
開發PyODPS 3任務PyODPS 2支援ODPS SQL的查詢,您可以在PyODPS節點中執行SQL。
開發PyODPS 3任務您可以通過設定hints參數,來設定運行時的參數。參數類型是dict
開發PyODPS 3任務您可以讀取SQL執行結果。
開發PyODPS 3任務您還可以通過DataFrame的方式處理資料。
配置調度屬性若節點需要周期性調度,您需要定義節點調度時的相關屬性。
提交節點您可以提交節點,標準模式工作空間提交任務後,任務僅在開發環境生效,開發環境中的任務不進行自動調度,您需要通過任務發布流程,將任務發布至生產環境後,任務才會周期調度運行。

建立PyODPS 2節點

  1. 進入資料開發頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料建模與開發 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 滑鼠移至上方至建立表徵圖,單擊建立節點 > MaxCompute > PyODPS 2
    您也可以展開商務程序目錄下的目標商務程序,按右鍵MaxCompute,選擇建立節點 > PyODPS 2

    如果您需要建立商務程序,請參見建立周期商務程序

  3. 建立節點對話方塊中,輸入節點名稱,並選擇路徑

  4. 單擊確認

配置調度屬性

單擊節點編輯地區右側的調度配置,在參數地區配置自訂參數,PyODPS節點與SQL節點定義變數的方式不同,詳情請參見調度參數配置

與DataWorks中的SQL節點不同,為了避免影響代碼,PyODPS節點不會在代碼中替換 ${param_name}這樣的字串,而是在執行代碼前,在全域變數中增加一個名為args的dict,調度參數可以在此擷取。例如,在參數中設定ds=${yyyymmdd},則可以通過以下方式在代碼中擷取該參數。

print('ds=' + args['ds'])
ds=20161116
說明 如果您需要擷取名為ds=${yyyymmdd}的分區,則可以使用如下方法。
o.get_table('table_name').get_partition('ds=' + args['ds'])

提交節點

重要 提交節點前,您需要設定重跑屬性依賴的上遊節點
  1. 單擊工具列中的提交表徵圖。
  2. 提交新版本對話方塊中,輸入備忘
  3. 單擊確認
如果您使用的是標準模式的工作空間,提交節點後,請單擊右上方的發布。詳情請參見發布任務

任務營運,詳情請參見:周期任務基本營運操作

如何判斷Python自訂指令碼任務的成功完成

判斷邏輯和shell節點一致,詳情請參見: 如何判斷Shell自訂指令碼任務的成功完成

常見問題

PyODPS常見問題