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

MaxCompute:DownloadSession

最終更新日:Nov 09, 2025

このトピックでは、MaxCompute テーブルデータをダウンロードするために使用される DownloadSession インターフェースについて説明します。

インターフェイス定義

public class DownloadSession {
    DownloadSession(Configuration conf, String projectName, String tableName,
                    String partitionSpec) throws TunnelException
    DownloadSession(Configuration conf, String projectName, String tableName,
                    String partitionSpec, String downloadId) throws TunnelException
    public String getId()
    public long getRecordCount()
    public TableSchema getSchema()
    public TableTunnel.DownloadStatus getStatus()
    public RecordReader openRecordReader(long start, long count)
    public RecordReader openRecordReader(long start, long count, boolean compress)
}

インターフェイスの説明

  • ライフサイクル: Download インスタンスの作成からダウンロードが完了するまでの期間。

  • Download インスタンスの作成: コンストラクターメソッドと TableTunnel を使用して Download インスタンスを作成できます。

    • リクエストモード: 同期。

    • サーバーはダウンロード用のセッションを作成し、ダウンロードを識別するための一意の DownloadId を生成します。クライアントは getId メソッドを呼び出すことで DownloadId を取得できます。

    • サーバーはデータファイルのインデックスを作成します。この操作はオーバーヘッドが高く、多数のファイルが存在する場合、時間がかかることがあります。

    • サーバーはレコードの総数を返します。複数の同時ダウンロードを開始できます。

  • データのダウンロード:

    • リクエストモード:非同期。

    • openRecordReader メソッドを呼び出して RecordReader インスタンスを作成します。start パラメーターは開始位置を指定し、その値は 0 以上である必要があります。count パラメーターはレコード数を指定し、その値は 0 より大きい必要があります。

  • ダウンロードステータスの表示:

    • リクエストモード: 同期。

    • getStatus メソッドを呼び出して、現在のダウンロードステータスを取得します。

  • 4 つのステータスは次のとおりです。

    • UNKNOWN: サーバーがセッションを作成するときに設定される初期値。

    • NORMAL:Download オブジェクトが正常に作成されました。

    • CLOSED: ダウンロードが完了しました。

    • EXPIRED:ダウンロードがタイムアウトしました。

ベストプラクティス

RecordReader のライフサイクルを適切に制御する

最適なロードバランシングを実現するには、単一の RecordReader インスタンスの継続的な読み取り期間を妥当な範囲内に制御することをお勧めします。MaxCompute は、各サービスノードの負荷に基づいて、各 RecordReader インスタンスに適切なサービスノードを自動的に割り当てます。単一の RecordReader インスタンスが長期間データを読み取ると、ロードバランシング機能が完全には活用されず、読み取りパフォーマンスが低下する可能性があります。最適なパフォーマンスを実現するために、5 分などの一定期間が経過した後に RecordReader インスタンスを解放して再作成することをお勧めします。