如果要Table Store資料表中的資料投遞到OSS Bucket中儲存,您可以使用CreateDeliveryTask介面建立一個投遞任務。
Table StoreJava SDK從5.10.3版本開始支援資料湖投遞功能,請確保已安裝正確的Table StoreJava SDK。關於Table StoreJava SDK版本的更多資訊,請參見Java SDK歷史迭代版本。
前提條件
已開通OSS服務且在Table Store執行個體所在地區建立Bucket。具體操作,請參見開通OSS服務。
已通過控制台建立Table Store服務關聯角色並記錄角色的ARN。具體操作,請參見建立投遞任務。
服務關聯角色的ARN請通過RAM控制台擷取,具體操作如下:
在RAM存取控制台的角色介面,搜尋AliyunServiceRoleForOTSDataDelivery後,單擊角色名稱,在角色詳情介面,可以查看和複製角色的ARN資訊。

已初始化OTSClient。具體操作,請參見初始化Tablestore Client。
已建立資料表並寫入資料。
參數
參數 | 說明 |
|---|---|
tableName | 資料表名稱。 |
taskName | 投遞任務名稱。 名稱只能包含英文小寫字母(a~z)、數字和虛線(-),開頭和結尾必須為英文小寫字母或數字,且長度為3~16字元。 |
taskConfig | 投遞任務配置,包括如下選項:
|
taskType | 投遞任務的類型,包括如下選項:
|
樣本
以下樣本用於為資料表建立投遞任務。
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"); //eventColumn為可選配置,指定按某一列資料的時間進行分區。如果不設定此參數,則按資料寫入Table Store的時間進行分區。
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("resquestID: "+ response.getRequestId());
System.out.println("traceID: " + response.getTraceId());
System.out.println("create delivery task success");
}