全部產品
Search
文件中心

MaxCompute:SDK介面

更新時間:May 14, 2025

本文為您介紹流式資料通道SDK介面的使用方法。

使用說明

您可以基於MaxCompute Studio通過Java SDK使用MaxCompute流式資料通道服務。

您可以使用以下配置在MaxCompute Studio上添加指定版本的pom依賴。

<dependency>
  <groupId>com.aliyun.odps</groupId>
  <artifactId>odps-sdk-core</artifactId>
  <version>0.36.4-public</version>
</dependency>

介面介紹

不同版本的SDK在使用上有差別,詳情請參見SDK Java Doc

介面

描述

TableTunnel

訪問MaxCompute Tunnel服務的入口類。您可以通過外網或阿里雲內網環境對MaxCompute及其Tunnel進行訪問。

TableTunnel.StreamUploadSession

上傳資料會話。

TableTunnel.StreamRecordPack

資料緩衝會話。

StreamUploadSession

public interface StreamUploadSession {

    /**
     * 設定P2P模式。
     * @param mode
     */
    public void setP2pMode(boolean mode);

    /**
     * 擷取Session ID。
     * @return Session ID
     */
    public String getId();

    /**
     * 擷取表結構。
     */
    public TableSchema getSchema();

    /**
     * 建立一個無壓縮{@link StreamRecordPack}對象。
     * @return StreamRecordPack對象。
     */
    public StreamRecordPack newRecordPack() throws IOException;

    /**
     * 建立一個壓縮{@link StreamRecordPack}對象。
     * @param compressOption 資料轉送壓縮選項。
     * @return StreamRecordPack對象。
     */
    public StreamRecordPack newRecordPack(CompressOption compressOption) throws IOException, TunnelException;

    /**
     * 建立一個{@link Record}對象。
     * @return Record對象。
     */
    public Record newRecord();

  }

StreamRecordPack

public interface StreamRecordPack {

    /**
     * 追加一條記錄。
     * @param record
     */
    public void append(Record record) throws IOException;

    /**
     * @return 返回當前pack儲存的記錄數。
     */
    public long getRecordCount();

    /**
     * 注意:由於在寫到記憶體緩衝區前,資料會經過多層緩衝區。
     * 因此這個值的變化並不是連續的,有可能出現追加資料後,getDataSize不變的情境。
     * @return 返回當前pack儲存資料的大小。
     */
    public long getDataSize();

    /**
     * 資料發送到服務端。
     * pack對象在flush成功以後可以複用。
     * @return traceId。
     * @throws IOException。
       */
    public String flush() throws IOException;

    /**
     * 資料發送到服務端。
     * pack對象在flush成功以後可以複用。
     * @param flushOption 設定write參數 {@link FlushOption}。
     * @return flush result。
     * @throws IOException。
     */
    public FlushResult flush(FlushOption flushOption) throws IOException;
  }

使用建議

在使用上述介面時,您可以借鑒如下實踐結果實現效能最大化:

  • 未開啟壓縮情境下,控制每個RecordPack的資料量超過4 MB可以達到最佳效能。

  • 開啟壓縮情境下,控制每個RecordPack的資料量超過1 MB可以達到最佳效能。