アップロードプロセスを実行するには、次の手順に従ってください。
  1. データを分割します。
  2. openRecordWriter (id) を呼び出して、各データブロックのブロック ID を指定します。
  3. 1 つ以上のスレッドを使用して、ブロックをアップロードします。 1 つのブロックのアップロードが失敗すると、全ブロックをアップロードし直さなくてはなりません。
  4. すべてのブロックのアップロードが完了したら、アップロードした ID のリストをサーバーに渡して検証を実行します。 session.commit([1,2,3,…])を呼び出して、この処理を実行します。

    接続タイムアウトなどのサーバーブロックマネージャーの制限事項により、アップロードプロセスのロジックは複雑です。 このようなプロセスを簡便化するため、SDK には高度な RecordWriter—TunnelBufferWriter インターフェイスが実装されています。

このインターフェイスは、次のように定義されています。
public class TunnelBufferedWriter implements RecordWriter {
        public TunnelBufferedWriter(TableTunnel.UploadSession session, CompressOption option) throws IOException;
        public long getTotalBytes();
        public void setBufferSize(long bufferSize);
        public void setRetryStrategy(RetryStrategy strategy);
        public void write(Record r) throws IOException;
        public void close() throws IOException;
    }
パラメーター
  • ライフサイクル: RecordWriter の作成から始まり、データのアップロードが完了すると終わります。
  • TunnelBufferedWriter インスタンスの作成: UploadSession の openBufferedWriter インターフェイスを呼び出してインスタンスを作成します。
  • データのアップロード: Write インターフェイスを呼び出します。 データは、まずローカルキャッシュに書き込まれます。 キャッシュがいっぱいになると、接続タイムアウトを避けるため、データは一括でサーバーに送信されます。 アップロードが失敗した場合、自動再試行がサポートされます。
  • アップロードの完了: Close インターフェイスを呼び出し、UploadSession の Commit インターフェイスを呼び出してアップロードを完了します。
  • バッファ制御: バッファが占有するメモリのサイズ (バイト単位) を変更するには、setBufferSize インターフェイスを使用します。64 MB を超えると、サーバーのパフォーマンスが低下する可能性があります。 通常、追加設定なしで、このパラメーターのデフォルト値が使用されます。
  • 再試行ポリシーの設定: EXPONENTIAL_BACKOFF、LINEAR_BACKOFF、および CONSTANT_BACKOFF の 3 つの再試行回避ポリシーを選択できます。 例:次のコードセグメントは、書き込み再試行回数を 6 に設定しています。 不必要な再試行を避けるために、再試行は、4 秒、8 秒、16 秒、32 秒、64 秒、および 128 秒 (指数関数的に増加) 後に実行されます。 これはデフォルト設定であり、基本的には変更しないでください。
    RetryStrategy retry 
      = new RetryStrategy(6, 4, RetryStrategy.BackoffStrategy.EXPONENTIAL_BACKOFF)
    writer = (TunnelBufferedWriter) uploadSession.openBufferedWriter();
    writer.setRetryStrategy(retry);