すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:Python 用 Tunnel SDK の使用例

最終更新日:May 13, 2025

MaxCompute Tunnel は、MaxCompute との間でデータをアップロードまたはダウンロードするために使用できるトンネルサービスです。Python 用 Tunnel SDK は PyODPS(Python 用 MaxCompute SDK)に含まれています。このトピックでは、Python 用 Tunnel SDK の使用方法を示す例を紹介します。

使用上の注意

  • 以下のセクションでは、Python 用 SDK を使用して MaxCompute にデータをアップロードおよびダウンロードする方法の例を示します。他のシナリオの例については、「Python 用 SDK ドキュメント」をご参照ください。

  • Cython 環境では、PyODPS はインストール中に C コードをコンパイルして、Tunnel ベースのデータのアップロードとダウンロードを高速化します。

データアップロードの例

import os
from odps import ODPS
from odps.tunnel import TableTunnel

# 環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID を Alibaba Cloud アカウントの AccessKey ID に設定します。
# 環境変数 ALIBABA_CLOUD_ACCESS_KEY_SECRET を Alibaba Cloud アカウントの AccessKey シークレットに設定します。
# AccessKey ID または AccessKey シークレットを直接使用しないことをお勧めします。
o = ODPS(
    os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
    os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
    project='your-default-project',
    endpoint='your-end-point',
)

table = o.get_table('my_table')

tunnel = TableTunnel(o)
upload_session = tunnel.create_upload_session(table.name, partition_spec='pt=test')

with upload_session.open_record_writer(0) as writer:
    record = table.new_record()
    record[0] = 'test1'
    record[1] = 'id1'
    writer.write(record)

    record = table.new_record(['test2', 'id2'])
    writer.write(record)

# WITH コードブロックの外側で次の文を実行する必要があります。データを書き込む前に次の文を実行すると、エラーが報告されます。
upload_session.commit([0])

データダウンロードの例

from odps.tunnel import TableTunnel

tunnel = TableTunnel(odps)
download_session = tunnel.create_download_session('my_table', partition_spec='pt=test')

with download_session.open_record_reader(0, download_session.count) as reader:
     for record in reader:
         # 各レコードを処理します。

with download_session.open_arrow_reader(0, download_session.count) as reader:
     for batch in reader:
         # 各 Arrow RecordBatch を処理します。