日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Python SDK示例:資源

本文為您介紹Python SDK中操作MaxCompute資源相關的典型場景操作示例。

背景信息

MaxCompute中的資源常用在UDF和MapReduce中。基本操作如下:

  • list_resources():列出該項目空間下的所有資源。

  • exist_resource():判斷資源是否存在。

  • delete_resource():刪除資源。您也可以通過Resource對象調用drop方法實現。

  • create_resource():創建資源。

  • open_resource():讀取資源。

PyODPS中,主要支持文件和表兩種資源類型。

  • 文件資源:

    文件資源包括基礎的FILEPYJARARCHIVE

    說明

    在DataWorks中,PY格式的文件資源請以FILE形式上傳,詳情請參見Python UDF文檔

    文件資源相關SDK示例請參見下文的文件資源

  • 表資源:表資源相關SDK示例請參見下文的表資源

文件資源

文件資源常見操作如下:

創建文件資源

您可以通過給定資源名、文件類型和一個file-like的對象(或字符串對象)調用create_resource()來創建。

# 使用file-like的對象創建文件資源,注意壓縮包等文件需要用二進制模式讀取
resource = o.create_resource('test_file_resource', 'file', file_obj=open('/to/path/file', 'rb'))
# 使用字符串創建文件資源
resource = o.create_resource('test_py_resource', 'py', file_obj='import this')

讀取和修改文件資源

打開一個資源有如下兩種方法:

  • 對文件資源調用open方法。

  • 在MaxCompute入口調用open_resource()方法。

打開后的對象是file-like的對象。類似于Python內置的open()方法,文件資源也支持打開的模式,示例如下。

with resource.open('r') as fp:  # 以讀模式打開資源。
    content = fp.read()  # 讀取全部的內容。
    fp.seek(0)  # 回到資源開頭。
    lines = fp.readlines()  # 讀成多行。
    fp.write('Hello World')  # 報錯,讀模式下無法寫資源。

with o.open_resource('test_file_resource', mode='r+') as fp:  # 讀寫模式打開資源。
    fp.read()
    fp.tell()  # 定位當前位置。
    fp.seek(10)
    fp.truncate()  # 截斷后面的內容。
    fp.writelines(['Hello\n', 'World\n'])  # 寫入多行。
    fp.write('Hello World')
    fp.flush()  # 手動調用會將更新提交到ODPS。

所有支持的打開類型包括:

  • r:讀模式,只能打開不能寫。

  • w:寫模式,只能寫入而不能讀文件,注意用寫模式打開,文件內容會先被清空。

  • a:追加模式,只能寫入內容到文件末尾。

  • r+:讀寫模式,可以任意讀寫內容。

  • w+:類似于r+,但會先清空文件內容。

  • a+:類似于r+,但寫入時只能寫入文件末尾。

同時,PyODPS中文件資源支持以二進制模式打開,例如一些壓縮文件需要以這種模式打開。

  • rb:指以二進制讀模式打開文件。

  • r+b:指以二進制讀寫模式打開。

表資源

創建表資源

o.create_resource('test_table_resource', 'table', table_name='my_table', partition='pt=test')

更新表資源

table_resource = o.get_resource('test_table_resource')
table_resource.update(partition='pt=test2', project_name='my_project2')

獲取表及分區

table_resource = o.get_resource('test_table_resource')
table = table_resource.table
print(table.name)
partition = table_resource.partition
print(partition.spec)

讀寫內容

table_resource = o.get_resource('test_table_resource')
with table_resource.open_writer() as writer:
    writer.write([0, 'aaaa'])
    writer.write([1, 'bbbbb'])
    
with table_resource.open_reader() as reader:
    for rec in reader:
        print(rec)