本文為您介紹流式資料通道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可以達到最佳效能。