O Tablestore SDK for Java divide logicamente todos os dados de uma tabela em splits de tamanho especificado e retorna o intervalo de chave primária e a dica de localização de cada split.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize o cliente.
Descrição
O Tablestore divide logicamente a tabela em splits com tamanho aproximado especificado no servidor. Cada split inclui seu intervalo de chave primária (lowerBound / upperBound) e uma dica de localização da máquina que hospeda o split (location). Passe esses intervalos de chave primária para RangeRowQueryCriteria e processe os splits em paralelo por meio da leitura de dados por intervalo ou da leitura de dados com iterador.
public ComputeSplitsBySizeResponse computeSplitsBySize(ComputeSplitsBySizeRequest request) throws TableStoreException, ClientException
O exemplo a seguir divide a tabela split_demo em splits de aproximadamente 200 MB e exibe a localização e o intervalo de chave primária de cada split.
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
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
String |
Nome da tabela. |
|
splitSize (obrigatório) |
long |
Tamanho aproximado de cada split, em unidades de 100 MB. Por exemplo, ao passar |
Resposta
Resultado da divisão
ComputeSplitsBySizeResponse contém os seguintes campos específicos da operação.
|
Nome |
Tipo |
Descrição |
|
splits |
List<Split> |
Splits lógicos. Use |
|
primaryKeySchema |
List<PrimaryKeySchema> |
Esquema de chave primária da tabela. Use |
Informações do split
Cada elemento em ComputeSplitsBySizeResponse.splits[] é do tipo Split.
|
Nome |
Tipo |
Descrição |
|
lowerBound |
PrimaryKey |
Limite inferior do intervalo de chave primária do split. |
|
upperBound |
PrimaryKey |
Limite superior do intervalo de chave primária do split. |
|
location |
String |
Dica de localização da máquina que armazena o split. O valor pode ser uma string vazia. |