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 2的使用樣本請參見開發PyODPS 3任務。操作 | 說明 |
建立PyODPS 2節點 | DataWorks提供PyODPS 2節點類型,整合了MaxCompute的Python SDK。您可以建立PyODPS節點直接編輯Python代碼。 |
開發PyODPS 3任務 | DataWorks的PyODPS 2節點中,將會包含一個全域的變數odps或o,即ODPS入口,您無需手動定義ODPS入口。 |
開發PyODPS 3任務 | PyODPS 2支援ODPS SQL的查詢,您可以在PyODPS節點中執行SQL。 |
開發PyODPS 3任務 | 您可以通過設定hints參數,來設定運行時的參數。參數類型是dict。 |
開發PyODPS 3任務 | 您可以讀取SQL執行結果。 |
開發PyODPS 3任務 | 您還可以通過DataFrame的方式處理資料。 |
配置調度屬性 | 若節點需要周期性調度,您需要定義節點調度時的相關屬性。 |
提交節點 | 您可以提交節點,標準模式工作空間提交任務後,任務僅在開發環境生效,開發環境中的任務不進行自動調度,您需要通過任務發布流程,將任務發布至生產環境後,任務才會周期調度運行。 |
建立PyODPS 2節點
進入資料開發頁面。
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的 ,在下拉框中選擇對應工作空間後單擊進入資料開發。
- 滑鼠移至上方至表徵圖,單擊 。您也可以展開商務程序目錄下的目標商務程序,按右鍵MaxCompute,選擇。
如果您需要建立商務程序,請參見建立周期商務程序。
在建立節點對話方塊中,輸入節點名稱,並選擇路徑。
單擊確認。
配置調度屬性
單擊節點編輯地區右側的調度配置,在參數地區配置自訂參數,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'])
提交節點
- 單擊工具列中的表徵圖。
- 在提交新版本對話方塊中,輸入備忘。
- 單擊確認。
任務營運,詳情請參見:周期任務基本營運操作
如何判斷Python自訂指令碼任務的成功完成
判斷邏輯和shell節點一致,詳情請參見: 如何判斷Shell自訂指令碼任務的成功完成。