Todos los productos
Search
Centro de documentos

Tablestore:División de datos para escaneos paralelos

Última actualización: Sep 03, 2026

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 2 se dividen los datos en particiones de 200 MB cada una.

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 getSplits() para obtener la lista.

primaryKeySchema

List<PrimaryKeySchema>

El esquema de clave primaria de la tabla. Llame a getPrimaryKeySchema() para obtener el valor.

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.