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 |
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 |
|
primaryKeySchema |
List<PrimaryKeySchema> |
Schéma de clé primaire de la table. Appelez |
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. |