Para consumir dados de uma tabela em tempo real, chame a operação CreateTunnel e crie um tunnel para essa tabela. É possível criar vários tunnels para uma única tabela de dados. Ao criar um tunnel, especifique o nome da tabela de dados, o nome do tunnel e o tipo de tunnel.
Pré-requisitos
Uma instância de TunnelClient inicializada.
Uma tabela de dados criada. Para mais informações, consulte Criar uma tabela de dados.
Parâmetros
Parâmetros de solicitação
|
Parâmetro |
Descrição |
|
TableName |
Nome da tabela de dados. |
|
TunnelName |
Nome do tunnel. |
|
TunnelType |
Tipo do tunnel. Valores válidos:
Se você definir este parâmetro como Stream ou BaseAndStream, o sistema considerará incrementais todos os dados gravados na tabela após a criação do tunnel. Caso precise consumir dados incrementais gerados a partir de um momento específico, configure o parâmetro startTime para esses dados.
|
Parâmetros de resposta
|
Parâmetro |
Descrição |
|
TunnelId |
ID do tunnel. |
|
ResponseInfo |
Outros campos retornados na solicitação. |
|
RequestId |
ID da solicitação. |
Exemplos
Criar um tunnel para consumo de dados completos
O código de exemplo a seguir demonstra como criar um tunnel do tipo BaseData:
// You can create a tunnel of the TunnelType.BaseData, TunnelType.Stream, or TunnelType.BaseAndStream type.
// In this example, a tunnel of the BaseData type is created. To create tunnels of other types, set the TunnelType parameter in CreateTunnelRequest to the required types.
private static void createTunnel(TunnelClient client, String tableName, String tunnelName) {
CreateTunnelRequest request = new CreateTunnelRequest(tableName, tunnelName, TunnelType.BaseData);
CreateTunnelResponse resp = client.createTunnel(request);
System.out.println("RequestId: " + resp.getRequestId());
System.out.println("TunnelId: " + resp.getTunnelId());
}
Criar um tunnel para consumo de dados incrementais ou diferenciais
O exemplo abaixo ilustra a criação de um tunnel do tipo Stream ou BaseAndStream, definindo o intervalo de tempo dos dados incrementais a serem consumidos:
// Create a tunnel that is used to consume incremental or differential data and specify the start timestamp and the end timestamp for the time range of the incremental data that you want to consume. The configurations specified by StreamTunnelConfig do not take effect for tunnels of the BaseData type.
private static void createStreamTunnelByOffset(TunnelClient client,String tableName,String tunnelName, long startTime, long endTime){
CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.Stream);// Create a tunnel of the Stream type.
//CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.BaseAndStream);// Create a tunnel of the BaseAndStream type.
StreamTunnelConfig streamTunnelConfig = new StreamTunnelConfig();
/*
Specify the start timestamp and the end timestamp to read incremental data. Unit: milliseconds. Valid values: [CurrentSystemTime - StreamExpiration + 5 minute, CurrentSystemTime).
CurrentSystemTime is the timestamp of the current system time accurate to milliseconds. StreamExpiration is the timestamp of the incremental log validity period accurate to milliseconds. The maximum validity period of incremental logs is seven days. You can specify the Stream validity period when you enable Stream for the data table.
The value of endTime must be greater than the value of startTime.
*/
streamTunnelConfig.setStartOffset(startTime);
streamTunnelConfig.setEndOffset(endTime);
createTunnelRequest.setStreamTunnelConfig(streamTunnelConfig);
CreateTunnelResponse resp = client.createTunnel(createTunnelRequest);
System.out.println("RequestId: " + resp.getRequestId());
System.out.println("TunnelId: " + resp.getTunnelId());
}
Perguntas frequentes
Erro OTSTrimmedDataAccess: os dados de stream solicitados já foram removidos ou não existem
Referências
Para detalhes sobre a operação de API usada na criação de tunnels, consulte CreateTunnel.
Caso queira utilizar rapidamente o Tunnel Service para consumir dados, veja Guia de introdução.
É possível consultar informações sobre todos os tunnels de uma tabela. Saiba mais em Consultar informações sobre todos os tunnels de uma tabela de dados.
Para obter detalhes de um tunnel específico, acesse Consultar informações sobre um tunnel.
Tunnels desnecessários podem ser excluídos. Consulte Excluir um tunnel para instruções.
O Tunnel Service também permite realizar migrações de dados. Veja Sincronizar dados de uma tabela de dados para outra.
O Realtime Compute for Flink utiliza tunnels do Tunnel Service como entradas de dados em streaming, possibilitando a computação e análise de dados do Tablestore com Flink. Mais informações em Usar o Flink.
Não há custos adicionais pelo uso do Tunnel Service. Durante o consumo de dados, a cobrança ocorre sobre o throughput de leitura, proporcional ao volume de dados extraídos. Confira a Visão geral de faturamento.