O Tablestore SDK for Java permite criar uma tarefa de entrega para transferir dados completos, incrementais ou ambos de uma tabela de dados para um bucket do OSS na mesma região.
Pré-requisitos
Antes de começar, verifique se os seguintes pré-requisitos foram atendidos:
Instale o Tablestore SDK for Java e inicialize um client. A entrega de dados requer a versão 5.10.3 ou posterior. Recomendamos o uso da versão mais recente.
Ative o Object Storage Service (OSS) e crie um bucket do OSS na mesma região da instância do Tablestore. Para mais informações, consulte Get started with OSS.
Crie a função vinculada ao service
AliyunServiceRoleForOTSDataDeliverye obtenha o ARN da função. Para mais informações, consulte Create a delivery task.
Descrição
Chame createDeliveryTask para criar uma tarefa de entrega. Uma tarefa pode entregar apenas dados completos ou incrementais, ou ainda entregar os dados completos primeiro e depois transferir continuamente os dados incrementais.
public CreateDeliveryTaskResponse createDeliveryTask(CreateDeliveryTaskRequest request)
throws TableStoreException, ClientException
Após criar uma tarefa de entrega, inicialize-a. Chame describeDeliveryTask para query delivery task information.
O exemplo a seguir cria uma tarefa que entrega dados completos e incrementais, além de criar partições diárias no OSS com base no horário de gravação dos dados no Tablestore. Neste exemplo, client é um client já inicializado. Substitua os placeholders pelos valores reais e certifique-se de que as colunas pk, event_time e active sejam dos tipos String, String e Boolean, respectivamente.
String tableName = "<TABLE_NAME>";
String taskName = "<TASK_NAME>";
OSSTaskConfig taskConfig = new OSSTaskConfig();
taskConfig.setOssPrefix("delivery/year=$yyyy/month=$MM/day=$dd");
taskConfig.setOssBucket("<OSS_BUCKET>");
taskConfig.setOssEndpoint("<OSS_ENDPOINT>");
taskConfig.setOssStsRole("<ROLE_ARN>");
taskConfig.addParquetSchema(new ParquetSchema("pk", "pk", DataType.UTF8));
taskConfig.addParquetSchema(
new ParquetSchema("event_time", "event_time", DataType.UTF8));
taskConfig.addParquetSchema(new ParquetSchema("active", "active", DataType.BOOL));
CreateDeliveryTaskRequest request =
new CreateDeliveryTaskRequest(tableName, taskName, taskConfig);
request.setTaskType(DeliveryTaskType.BASE_INC);
client.createDeliveryTask(request);
Parâmetros
Solicitação de entrega
request é do tipo CreateDeliveryTaskRequest e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
String |
Nome da tabela de dados. |
|
taskName (obrigatório) |
String |
Nome da tarefa de entrega. O nome pode conter apenas letras minúsculas, dígitos, hífens ( |
|
taskConfig (obrigatório) |
OSSTaskConfig |
Configuração de entrega para o OSS. |
|
taskType (obrigatório) |
DeliveryTaskType |
Tipo da tarefa de entrega. Valores válidos: |
Configuração de entrega do OSS
request.taskConfig é do tipo OSSTaskConfig e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
ossPrefix (obrigatório) |
String |
Prefixo do diretório no bucket do OSS. É possível usar as variáveis de tempo |
|
ossBucket (obrigatório) |
String |
Nome do bucket do OSS. O bucket deve estar na mesma região da instância do Tablestore. |
|
ossEndpoint (obrigatório) |
String |
Endpoint da região onde o bucket do OSS está localizado. |
|
ossStsRole (obrigatório) |
String |
ARN da função vinculada ao service |
|
parquetSchema (obrigatório) |
List<ParquetSchema> |
Campos a serem entregues. Selecione os campos e personalize seus nomes e ordem no OSS. A ordem dos elementos define a ordem dos campos nos arquivos Parquet. Chame |
|
eventTimeColumn (opcional) |
EventColumn |
Coluna de horário do evento. Se este parâmetro for especificado, as variáveis de tempo em |
|
format (opcional) |
OSSFileFormat |
Formato de arquivo do OSS. O valor padrão e único suportado é |
|
timeFormatter (opcional) |
TimeFormatter |
Parâmetro reservado para formato de partição. O SDK atual não inclui este parâmetro nas solicitações. Não o configure. |
Colunas entregues
Cada elemento em request.taskConfig.parquetSchema[] é do tipo ParquetSchema e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
columnName (obrigatório) |
String |
Nome do campo de source na tabela de dados do Tablestore. |
|
ossColumnName (obrigatório) |
String |
Nome do campo após a entrega no OSS. |
|
type (obrigatório) |
DataType |
Tipo de destino do campo no arquivo Parquet. O tipo deve corresponder ao tipo de dados do campo de source. Caso contrário, o valor do campo será descartado como dado inconsistente. Para mais informações, consulte Data type mappings. |
|
encode (opcional) |
OSSFileEncoding |
Codificação Parquet. Valor padrão: |
|
typeExtend (opcional) |
String |
Parâmetro reservado para tipo estendido do Parquet. Este parâmetro não é suportado. Não o configure. |
Coluna de horário do evento
request.taskConfig.eventTimeColumn é do tipo EventColumn e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
columnName (obrigatório) |
String |
Nome do campo de source usado como horário do evento. |
|
timeFormat (obrigatório) |
EventTimeFormat |
Formato do horário do evento. Valores válidos: |
Exemplos
Particionar dados por horário do evento
Para criar partições no OSS com base na coluna event_time, configure a coluna de horário do evento em taskConfig antes de criar a solicitação. No exemplo abaixo, os valores na coluna devem estar em conformidade com o RFC 3339.
EventColumn eventColumn =
new EventColumn("event_time", EventTimeFormat.RFC3339);
taskConfig.setEventTimeColumn(eventColumn);