Todos os produtos
Search
Central de documentação

Tablestore:Criar uma tarefa de entrega

Última atualização: Jun 23, 2026

Para entregar dados de uma tabela de dados do Tablestore para um bucket do OSS, chame a operação CreateDeliveryTask para criar uma tarefa de entrega.

null

O recurso de entrega de dados requer o Tablestore SDK for Java 5.10.3 ou posterior. Certifique-se de ter instalado uma versão compatível. Para mais informações, consulte Histórico de versões do Java SDK.

Pré-requisitos

  • 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 Ativar o OSS.

  • Crie a função vinculada ao serviço para o Tablestore no console e registre seu ARN. Para mais informações, consulte Criar uma tarefa de entrega.

    No console do RAM, acesse a página Roles, pesquise por AliyunServiceRoleForOTSDataDelivery e clique no nome da função. Na página de detalhes da função, você pode visualizar e copiar o ARN.

  • Inicialize uma instância do OTSClient. Para mais informações, consulte Inicializar um cliente do Tablestore.

  • Crie uma tabela de dados e popule-a com dados.

Parâmetros

Parâmetro

Descrição

tableName

O nome da tabela.

taskName

O nome da tarefa de entrega.

O nome deve ter de 3 a 16 caracteres e pode conter apenas letras minúsculas, dígitos e hifens (-). Deve começar e terminar com uma letra minúscula ou um dígito.

taskConfig

As configurações da tarefa de entrega. Valores válidos:

  • ossPrefix: o prefixo da pasta no bucket. Os dados são entregues do Tablestore para a pasta. O caminho da pasta de destino aceita as seguintes variáveis de tempo: $yyyy, $MM, $dd, $HH e $mm.

    • Quando o caminho usa variáveis de tempo para entrega, as pastas do OSS são geradas dinamicamente com base no horário em que os dados são gravados. Dessa forma, os dados são particionados com base nas convenções de nomenclatura seguidas pelo Hive para particionar dados. Os objetos no OSS são organizados, particionados e distribuídos com base no tempo.

    • Quando o caminho não usa variáveis de tempo, todos os arquivos são entregues em uma pasta do OSS cujo nome contém um prefixo específico.

  • ossBucket: o nome do bucket do OSS.

  • ossEndpoint: o endereço de serviço da região onde o bucket do OSS está implantado.

  • ossStsRole: o Alibaba Cloud Resource Name (ARN) da função vinculada ao serviço do Tablestore.

  • format: o formato dos dados entregues. Os dados entregues são armazenados no formato Parquet. Por padrão, o serviço de entrega usa PLAIN para codificar dados de qualquer tipo.

  • eventTimeColumn: a coluna de tempo do evento. Este parâmetro especifica que os dados são particionados com base no tempo de uma coluna. Se você não especificar este parâmetro, os dados serão particionados com base no horário em que são gravados no Tablestore.

  • parquetSchema: especifica a coluna que você deseja entregar. Configure os campos de origem, campos de destino e tipos de campo de destino para a entrega.

    A ordem de classificação dos campos no Tablestore pode ser diferente da ordem dos campos no schema. Os dados Parquet armazenados no OSS são distribuídos com base na ordem dos campos no schema.

    null

    Os tipos de dados devem ser consistentes entre os campos de origem e destino. Se os tipos de dados entre os campos não forem consistentes, os campos serão descartados como dados sujos. Para mais informações sobre mapeamentos de tipos de campo, consulte a seção "Mapeamentos de tipos de dados" do tópico Início rápido.

taskType

O modo de entrega de dados. Valor padrão: BASE_INC. Valores válidos:

  • INC: modo de entrega de dados incremental. Apenas dados incrementais são sincronizados.

  • BASE: modo de entrega de dados completa. Todos os dados nas tabelas são verificados e sincronizados.

  • BASE_INC: modo de entrega de dados diferencial. Após a sincronização dos dados completos, o Tablestore sincroniza os dados incrementais. Ao sincronizar dados no modo incremental, você pode visualizar o horário da última entrega de dados e o status da tarefa de entrega atual.

Exemplo

O exemplo a seguir mostra como criar uma tarefa de entrega para uma tabela de dados.

private static void createDeliveryTask(SyncClient client) {
    String tableName = "<TABLE_NANE>";
    String taskName = "<TASK_NAME>";
    OSSTaskConfig taskConfig = new OSSTaskConfig();
    taskConfig.setOssPrefix("sampledeliverytask/year=$yyyy/month=$MM");
    taskConfig.setOssBucket("datadeliverytest");
    taskConfig.setOssEndpoint("oss-cn-hangzhou.aliyuncs.com");
    taskConfig.setOssStsRole("acs:ram::17************45:role/aliyunserviceroleforotsdatadelivery"); // The following lines set the optional eventColumn for time-based partitioning. If this parameter is not set, partitioning is based on the time it is written to Tablestore.
    EventColumn eventColumn = new EventColumn("PK1", EventTimeFormat.RFC1123);
    taskConfig.setEventTimeColumn(eventColumn);
    taskConfig.addParquetSchema(new ParquetSchema("PK1", "PK1", DataType.UTF8));
    taskConfig.addParquetSchema(new ParquetSchema("PK2", "PK2", DataType.BOOL));
    taskConfig.addParquetSchema(new ParquetSchema("Col1", "Col1", DataType.UTF8));
    CreateDeliveryTaskRequest request = new CreateDeliveryTaskRequest();
    request.setTableName(tableName);
    request.setTaskName(taskName);
    request.setTaskConfig(taskConfig);
    request.setTaskType(DeliveryTaskType.BASE_INC);
    CreateDeliveryTaskResponse response = client.createDeliveryTask(request);
    System.out.println("requestID: "+ response.getRequestId());
    System.out.println("traceID: " + response.getTraceId());
    System.out.println("Delivery task created successfully.");
}