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.
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
AliyunServiceRoleForOTSDataDeliverye 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:
|
taskType | O modo de entrega de dados. Valor padrão: BASE_INC. Valores válidos:
|
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.");
}