閱讀875 返回首頁    go 微信


UploadSession__SDK介紹_批量數據通道_大數據計算服務-阿裏雲

接口定義:

  1. public class UploadSession {
  2. UploadSession(Configuration conf, String projectName, String tableName,
  3. String partitionSpec) throws TunnelException;
  4. UploadSession(Configuration conf, String projectName, String tableName,
  5. String partitionSpec, String uploadId) throws TunnelException;
  6. public void commit(Long[] blocks);
  7. public Long[] getBlockList();
  8. public String getId();
  9. public TableSchema getSchema();
  10. public UploadSession.Status getStatus();
  11. public Record newRecord();
  12. public RecordWriter openRecordWriter(long blockId);
  13. public RecordWriter openRecordWriter(long blockId, boolean compress);
  14. }

Upload對象:

  • 生命周期:從創建Upload實例到結束上傳

  • 創建Upload實例,可以通過調用構造方法創建,也可以通過TableTunnel創建;

    • 請求方式:同步

    • Server端會為該Upload創建一個session, 生成唯一uploadId標識該Upload,客戶端可以通過getId獲取

  • 上傳數據:

    • 請求方式:同步

    • 調用openRecordWriter方法,生成RecordWriter實例,其中參數blockId用於標識此次上傳的數據,也描述了數據在整個表中的位置,取值範圍:[0,20000],當數據上傳失敗,可以根據blockId重新上傳。

  • 查看上傳:

    • 請求方式:同步

    • 調用getStatus可以獲取當前Upload狀態

    • 調用getBlockList可以獲取成功上傳的blockid list,可以和上傳的blockid list對比,對失敗的blockId重新上傳

  • 結束上傳:

    • 請求方式:同步

    • 調用commit(Long[] blocks)方法,參數blocks列表表示已經成功上傳的block列表,server端會對該列表進行驗證

    • 該功能是加強對數據正確性的校驗,如果提供的block列表與server端存在的block列表不一致拋出異常

    • Commit失敗可以進行重試

  • 7種狀態說明:

    • UNKNOWN, server端剛創建一個session時設置的初始值

    • NORMAL, 創建upload對象成功

    • CLOSING, 當調用complete方法(結束上傳)時,服務端會先把狀態置為CLOSING。

    • CLOSED, 完成結束上傳(即把數據移動到結果表所在目錄)後

    • EXPIRED, 上傳超時

    • CRITICAL, 服務出錯

注意:

  • 同一個UploadSession裏的blockId不能重複。也就是說,對於同一個UploadSession,用一個blockId打開RecordWriter,寫入一批數據後,調用close,然後再commit完成後,不可以重新再用該blockId打開另一個RecordWriter寫入數據。

  • 一個block大小上限 100GB,建議 大於 64M的數據。

  • 每個Session在服務端的生命周期為24小時。

  • 上傳數據時,建議準備好數據後再調用openRecordWriter開始寫入,Writer每寫入8KB數據會觸發一次網絡動作,如果120秒內沒有網絡動作,服務端將主動關閉連接,屆時Writer將不可用,請重新打開一個新的Writer寫入。

最後更新:2016-11-24 15:40:12

  上一篇:go TableTunnel__SDK介紹_批量數據通道_大數據計算服務-阿裏雲
  下一篇:go DownloadSession__SDK介紹_批量數據通道_大數據計算服務-阿裏雲