El Tablestore SDK for Java divide lógicamente todos los datos de una tabla en particiones de un tamaño especificado y devuelve el rango de clave primaria y la sugerencia de ubicación de cada partición.
Requisitos previos
Instale Tablestore SDK for Java e inicialice el cliente.
Descripción
Tablestore divide lógicamente una tabla en particiones con un tamaño aproximado especificado en el servidor. Cada partición incluye su rango de clave primaria (lowerBound / upperBound) y una sugerencia de ubicación para la máquina que aloja dicha partición (location). Pase estos rangos de clave primaria a RangeRowQueryCriteria y procese las particiones en paralelo mediante reading data by range o reading data with an iterator.
public ComputeSplitsBySizeResponse computeSplitsBySize(ComputeSplitsBySizeRequest request) throws TableStoreException, ClientException
A continuación se muestra un ejemplo que divide la tabla split_demo en particiones de aproximadamente 200 MB e imprime la ubicación y el rango de clave primaria de cada una.
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());
}
Parámetros
|
Nombre |
Tipo |
Descripción |
|
tableName (obligatorio) |
String |
El nombre de la tabla. |
|
splitSize (obligatorio) |
long |
El tamaño aproximado de cada partición, en unidades de 100 MB. Por ejemplo, al pasar |
Respuesta
Resultado de la división
ComputeSplitsBySizeResponse contiene los siguientes campos específicos de la operación.
|
Nombre |
Tipo |
Descripción |
|
splits |
List<Split> |
Las particiones lógicas. Llame a |
|
primaryKeySchema |
List<PrimaryKeySchema> |
El esquema de clave primaria de la tabla. Llame a |
Información de la partición
Cada elemento en ComputeSplitsBySizeResponse.splits[] es del tipo Split.
|
Nombre |
Tipo |
Descripción |
|
lowerBound |
PrimaryKey |
El límite inferior del rango de clave primaria de la partición. |
|
upperBound |
PrimaryKey |
El límite superior del rango de clave primaria de la partición. |
|
location |
String |
Una sugerencia de ubicación para la máquina que almacena la partición. El valor puede ser una cadena vacía. |