Tous les produits
Search
Centre de documentation

Tablestore:Split data for parallel scans

Dernière mise à jour :Aug 20, 2026

Le SDK Tablestore pour Java divise logiquement toutes les données d'une table en partitions de taille spécifiée et renvoie la plage de clés primaires ainsi que l'indication d'emplacement de chaque partition.

Prérequis

Installez le SDK Tablestore pour Java et initialisez le client.

Description

Tablestore divise logiquement une table en partitions de taille approximative spécifiée côté serveur. Chaque partition inclut sa plage de clés primaires (lowerBound / upperBound) et une indication d'emplacement pour la machine qui héberge la partition (location). Transmettez ces plages de clés primaires à RangeRowQueryCriteria, puis traitez les partitions en parallèle en lisant les données par plage ou en lisant les données avec un itérateur.

public ComputeSplitsBySizeResponse computeSplitsBySize(ComputeSplitsBySizeRequest request) throws TableStoreException, ClientException

L'exemple suivant divise la table split_demo en partitions d'environ 200 Mo et affiche l'emplacement ainsi que la plage de clés primaires de chaque partition.

String tableName = "split_demo";

// Divide the full data of the table into splits of approximately 200 MB (2 * 100 MB).
ComputeSplitsBySizeRequest request =
        new ComputeSplitsBySizeRequest(tableName, 2);

ComputeSplitsBySizeResponse response = client.computeSplitsBySize(request);

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

Iterator<Split> iterator = splits.iterator();
while (iterator.hasNext()) {
    Split split = iterator.next();
    // The primary key ranges returned by getLowerBound() and getUpperBound() can be passed directly
    // to RangeRowQueryCriteria for parallel reads with getRange or createRangeIterator.
    System.out.println("Location: " + split.getLocation());
    System.out.println("LowerBound: " + split.getLowerBound().jsonize());
    System.out.println("UpperBound: " + split.getUpperBound().jsonize());
}

Paramètres

Nom

Type

Description

tableName (obligatoire)

String

Nom de la table.

splitSize (obligatoire)

long

Taille approximative de chaque partition, en unités de 100 Mo. Par exemple, la valeur 2 divise les données en partitions de 200 Mo chacune.

Réponse

Résultat du fractionnement

La réponse ComputeSplitsBySizeResponse contient les champs spécifiques à l'opération suivants.

Nom

Type

Description

splits

List<Split>

Partitions logiques. Appelez getSplits() pour obtenir la liste.

primaryKeySchema

List<PrimaryKeySchema>

Schéma de clé primaire de la table. Appelez getPrimaryKeySchema() pour obtenir la valeur.

Informations sur la partition

Chaque élément de ComputeSplitsBySizeResponse.splits[] est de type Split.

Nom

Type

Description

lowerBound

PrimaryKey

Borne inférieure de la plage de clés primaires de la partition.

upperBound

PrimaryKey

Borne supérieure de la plage de clés primaires de la partition.

location

String

Indication d'emplacement pour la machine qui stocke la partition. La valeur peut être une chaîne vide.