快速入門
更新時間:
Copy as MD
PyODPS可在DataWorks等資料開發平台中作為資料開發節點調用。這些平台提供了PyODPS運行環境和調度執行的能力,無需您手動建立ODPS入口對象。PyODPS支援類似Pandas的快速、靈活和富有表現力的資料結構。您可以通過PyODPS提供的DataFrame API使用Pandas的資料結果處理功能。本文以DataWorks平台為例,協助您快速開始使用PyODPS,並且能夠用於實際專案。
前提條件
-
已開通MaxCompute服務。
操作步驟
-
建立PyODPS節點。
本文使用DataWorks PyODPS節點開發,詳情請參見開發PyODPS 3任務。
-
以PyODPS 3節點作為樣本,PyODPS 3節點底層的Python版本為3.7。
-
PyODPS節點擷取本地處理的資料量不能超過50 MB,節點運行時佔用的記憶體不能超過1 GB,否則節點任務會被系統中止。因此請避免在PyODPS任務中寫入資料量較大的Python處理代碼。
-
在DataWorks上編寫代碼並進行調試效率較低,為提升運行效率,建議本地安裝IDEA進行代碼開發。
-
建立商務程序。
進入資料開發頁面,按右鍵業務流程,選擇新建業務流程。
-
建立PyODPS節點。
按右鍵建立的商務程序,選擇,輸入節點名稱,單擊提交。
-
-
編輯PyODPS節點。
-
編寫程式碼。
在PyODPS節點的編輯框中輸入測試代碼。以下是一個完整的使用PyODPS介面執行表操作的樣本,更多關於表操作以及SQL操作的方法請參見表和SQL。
from odps import ODPS #以直接指定欄位名以及欄位類型的方式建立非分區表my_new_table。 #DataWorks的PyODPS節點中預設包含一個全域變數odps或者o,即為ODPS入口。您不需要手動定義ODPS入口,直接使用即可。更多資訊,請參見通過DataWorks使用PyODPS。 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的方式讀取表中的資料。 result = o.execute_sql('select * from my_new_table;',hints={'odps.sql.allow.fullscan': 'true'}) #讀取SQL執行結果。 with result.open_reader() as reader: for record in reader: print(record[0],record[1]) #刪除表以清除資源。 table.drop() -
運行代碼。
完成編輯後,單擊
表徵圖。運行結束後,您可以在下方的運行日誌中看到運行結果。輸出如下日誌代表執行成功。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
-
该文章对您有帮助吗?