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

Tablestore:パラレルスキャン用のデータ分割

最終更新日:Jun 26, 2026

コンピューティングエンジン からテーブル全体を並行してスキャンするには、データを並行処理できるサブ範囲に分割します。Tablestore SDK for Java は、指定されたサイズのプライマリキー範囲のスプリットを生成します。これらのスプリットを範囲読み取り API に直接渡すことで、データを並行して取得できます。

前提条件

  • Tablestore SDK for Java がインストール済みであること。

  • Tablestore クライアントが初期化済みであること。

説明

public ComputeSplitsBySizeResponse computeSplitsBySize(ComputeSplitsBySizeRequest request) throws TableStoreException, ClientException

サーバーサイド で、Tablestore はテーブルを指定されたサイズのスプリットに論理的に分割します。各スプリットには、そのプライマリキー範囲 (lowerBound / upperBound) と、スプリットをホストするマシンに関するヒント (location) が含まれます。これらのプライマリキー範囲を RangeRowQueryCriteria に直接渡し、範囲によるデータ読み取りまたはイテレータを使用したデータ読み取りでスプリットを並行して読み取ることができます。コンピューティングエンジンは、通常、このパターンを使用して並列実行を計画します。

次の例では、split_demo テーブルを約 200 MB のスプリットに分割し、各スプリットのロケーションとプライマリキー範囲を出力します。

String tableName = "split_demo";

// テーブルの全データを約 200 MB (2 * 100 MB) のスプリットに分割します。
ComputeSplitsBySizeRequest request =
        new ComputeSplitsBySizeRequest(tableName, 2);

ComputeSplitsBySizeResponse response = client.computeSplitsBySize(request);

System.out.println("RequestId: " + response.getRequestId());
System.out.println("PrimaryKeySchema: " + response.getPrimaryKeySchema());
System.out.println("ConsumedCapacity: " + response.getConsumedCapacity().jsonize());

List<Split> splits = response.getSplits();
System.out.println("Splits size: " + splits.size());

Iterator<Split> iterator = splits.iterator();
while (iterator.hasNext()) {
    Split split = iterator.next();
    // getLowerBound() と getUpperBound() が返すプライマリキー範囲は、
    // getRange または createRangeIterator を使用した並行読み取りのために RangeRowQueryCriteria に直接渡すことができます。
    System.out.println("Location: " + split.getLocation());
    System.out.println("LowerBound: " + split.getLowerBound().jsonize());
    System.out.println("UpperBound: " + split.getUpperBound().jsonize());
}
説明
  • splitSize は 100 MB 単位で測定されます。各スプリットは、渡した値を N とすると、約 N × 100 MB になります。

  • スプリットは 論理的なものであり、サイズはおおよその値です。正確なサイズは保証されません。

  • location フィールドは、スプリットをホストするマシンに関するヒントです。場合によっては、このフィールドが空になることがあります。

パラメーター

名前

タイプ

説明

tableName (必須)

String

テーブルの名前。

splitSize (必須)

long

各スプリットのおおよそのサイズを 100 MB 単位で指定します。たとえば、2 を渡すと、データはそれぞれ 200 MB のスプリットに分割されます。