快速入門
PyODPS可在DataWorks等數(shù)據(jù)開發(fā)平臺(tái)中作為數(shù)據(jù)開發(fā)節(jié)點(diǎn)調(diào)用。這些平臺(tái)提供了PyODPS運(yùn)行環(huán)境和調(diào)度執(zhí)行的能力,無需您手動(dòng)創(chuàng)建ODPS入口對(duì)象。PyODPS支持類似Pandas的快速、靈活和富有表現(xiàn)力的數(shù)據(jù)結(jié)構(gòu)。您可以通過PyODPS提供的DataFrame API使用Pandas的數(shù)據(jù)結(jié)果處理功能。本文以DataWorks平臺(tái)為例,幫助您快速開始使用PyODPS,并且能夠用于實(shí)際項(xiàng)目。
前提條件
已開通MaxCompute服務(wù),詳情請(qǐng)參見開通MaxCompute。
已開通DataWorks服務(wù),并創(chuàng)建工作空間,詳情請(qǐng)參見創(chuàng)建MaxCompute項(xiàng)目。
操作步驟
新建PyODPS節(jié)點(diǎn)。
為方便您快速開始,本文中使用DataWorks PyODPS節(jié)點(diǎn)進(jìn)行開發(fā),詳情請(qǐng)參見創(chuàng)建PyODPS 3節(jié)點(diǎn)。
說明以PyODPS 3節(jié)點(diǎn)作為示例,PyODPS 3節(jié)點(diǎn)底層的Python版本為3.7。
PyODPS節(jié)點(diǎn)獲取本地處理的數(shù)據(jù)量不能超過50 MB,節(jié)點(diǎn)運(yùn)行時(shí)占用的內(nèi)存不能超過1 GB,否則節(jié)點(diǎn)任務(wù)會(huì)被系統(tǒng)中止。因此請(qǐng)避免在PyODPS任務(wù)中寫入數(shù)據(jù)量較大的Python處理代碼。
在DataWorks上編寫代碼并進(jìn)行調(diào)試效率較低,為提升運(yùn)行效率,建議本地安裝IDEA進(jìn)行代碼開發(fā)。
新建業(yè)務(wù)流程。
進(jìn)入數(shù)據(jù)開發(fā)頁面,右鍵單擊業(yè)務(wù)流程,選擇新建業(yè)務(wù)流程。
新建PyODPS節(jié)點(diǎn)。
右鍵單擊新建的業(yè)務(wù)流程,選擇
,輸入節(jié)點(diǎn)名稱,單擊提交。
編輯PyODPS節(jié)點(diǎn)。
編寫程序代碼。
在PyODPS節(jié)點(diǎn)的編輯框中輸入測試代碼。以下是一個(gè)完整的使用PyODPS接口執(zhí)行表操作的示例,更多關(guān)于表操作以及SQL操作的方法請(qǐng)參見表和SQL。
from odps import ODPS #以直接指定字段名以及字段類型的方式創(chuàng)建非分區(qū)表my_new_table。 #DataWorks的PyODPS節(jié)點(diǎn)中默認(rèn)包含一個(gè)全局變量odps或者o,即為ODPS入口。您不需要手動(dòng)定義ODPS入口,直接使用即可。更多信息,請(qǐng)參見通過DataWorks使用PyODPS。 table = o.create_table('my_new_table', 'num bigint, id string', if_not_exists=True) #向非分區(qū)表my_new_table中插入數(shù)據(jù)。 records = [[111, 'aaa'], [222, 'bbb'], [333, 'ccc'], [444, '中文']] o.write_table(table, records) #讀取非分區(qū)表my_new_table中的數(shù)據(jù)。 for record in o.read_table(table): print(record[0],record[1]) #以運(yùn)行SQL的方式讀取表中的數(shù)據(jù)。 result = o.execute_sql('select * from my_new_table;',hints={'odps.sql.allow.fullscan': 'true'}) #讀取SQL執(zhí)行結(jié)果。 with result.open_reader() as reader: for record in reader: print(record[0],record[1]) #刪除表以清除資源。 table.drop()
運(yùn)行代碼。
完成編輯后,單擊圖標(biāo)。運(yùn)行結(jié)束后,您可以在下方的運(yùn)行日志中看到運(yùn)行結(jié)果。輸出如下日志代表執(zhí)行成功。