El Tablestore SDK for Java permite crear una tarea de entrega para transferir datos completos, datos incrementales o ambos desde una tabla de datos hacia un bucket de OSS en la misma región.
Requisitos previos
Antes de empezar, asegúrese de cumplir con los siguientes requisitos previos:
Instale el Tablestore SDK for Java e inicialice un cliente. La entrega de datos requiere la versión 5.10.3 o posterior. Se recomienda usar la versión más reciente.
Active Object Storage Service (OSS) y cree un bucket de OSS en la misma región que la instancia de Tablestore. Para obtener más información, consulte Get started with OSS.
Cree el rol vinculado al servicio
AliyunServiceRoleForOTSDataDeliveryy obtenga el ARN del rol. Para obtener más información, consulte Create a delivery task.
Descripción
Llame a createDeliveryTask para crear una tarea de entrega. Una tarea puede entregar únicamente datos completos o incrementales, o bien entregar primero los datos completos y luego continuar con la entrega de datos incrementales.
public CreateDeliveryTaskResponse createDeliveryTask(CreateDeliveryTaskRequest request)
throws TableStoreException, ClientException
Después de crear una tarea de entrega, es necesario inicializarla. Llame a describeDeliveryTask para query delivery task information.
El siguiente ejemplo crea una tarea que entrega datos completos e incrementales, y genera particiones diarias en OSS según la hora en que se escriben los datos en Tablestore. En este ejemplo, client es un cliente ya inicializado. Reemplace los marcadores de posición con los valores reales y asegúrese de que las columnas pk, event_time y active sean de tipo String, String y 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
Solicitud de entrega
request es de tipo CreateDeliveryTaskRequest y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
tableName (obligatorio) |
String |
Nombre de la tabla de datos. |
|
taskName (obligatorio) |
String |
Nombre de la tarea de entrega. El nombre solo puede contener letras minúsculas, dígitos, guiones ( |
|
taskConfig (obligatorio) |
OSSTaskConfig |
Configuración de entrega a OSS. |
|
taskType (obligatorio) |
DeliveryTaskType |
Tipo de tarea de entrega. Valores válidos: |
Configuración de entrega a OSS
request.taskConfig es de tipo OSSTaskConfig y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
ossPrefix (obligatorio) |
String |
Prefijo del directorio en el bucket de OSS. Puede usar las variables de tiempo |
|
ossBucket (obligatorio) |
String |
Nombre del bucket de OSS. El bucket debe encontrarse en la misma región que la instancia de Tablestore. |
|
ossEndpoint (obligatorio) |
String |
Endpoint de la región donde se ubica el bucket de OSS. |
|
ossStsRole (obligatorio) |
String |
ARN del rol vinculado al servicio |
|
parquetSchema (obligatorio) |
List<ParquetSchema> |
Campos por entregar. Puede seleccionar campos y personalizar sus nombres y orden en OSS. El orden de los elementos determina el orden de los campos en los archivos Parquet. Llame a |
|
eventTimeColumn (opcional) |
EventColumn |
Columna de hora del evento. Si se especifica este parámetro, las variables de tiempo en |
|
format (opcional) |
OSSFileFormat |
Formato de archivo de OSS. El valor predeterminado y único compatible es |
|
timeFormatter (opcional) |
TimeFormatter |
Parámetro reservado para el formato de partición. El SDK actual no incluye este parámetro en las solicitudes. No lo configure. |
Columnas entregadas
Cada elemento en request.taskConfig.parquetSchema[] es de tipo ParquetSchema y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
columnName (obligatorio) |
String |
Nombre del campo de origen en la tabla de datos de Tablestore. |
|
ossColumnName (obligatorio) |
String |
Nombre del campo después de entregarse a OSS. |
|
type (obligatorio) |
DataType |
Tipo de destino del campo en el archivo Parquet. El tipo debe coincidir con el tipo de datos del campo de origen. De lo contrario, el valor del campo se descarta como datos erróneos. Para obtener más información, consulte Data type mappings. |
|
encode (opcional) |
OSSFileEncoding |
Codificación de Parquet. Valor predeterminado: |
|
typeExtend (opcional) |
String |
Parámetro reservado para el tipo extendido de Parquet. Este parámetro no es compatible. No lo configure. |
Columna de hora del evento
request.taskConfig.eventTimeColumn es de tipo EventColumn y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
columnName (obligatorio) |
String |
Nombre del campo de origen que se usa como hora del evento. |
|
timeFormat (obligatorio) |
EventTimeFormat |
Formato de la hora del evento. Valores válidos: |
Ejemplos
Particionar datos por hora del evento
Para crear particiones en OSS basadas en la columna event_time, configure la columna de hora del evento en taskConfig antes de crear la solicitud. En el siguiente ejemplo, los valores de la columna deben cumplir con RFC 3339.
EventColumn eventColumn =
new EventColumn("event_time", EventTimeFormat.RFC3339);
taskConfig.setEventTimeColumn(eventColumn);