Tablestore のデータテーブルのデータをオブジェクトストレージサービス (OSS) バケットに配信するには、CreateDeliveryTask オペレーションを呼び出して配信タスクを作成します。
Tablestore SDK for Java V5.10.3 以降は、データ配信機能をサポートしています。データ配信機能をサポートするバージョンの Tablestore SDK for Java を使用していることを確認してください。Tablestore SDK for Java の詳細については、Tablestore SDK for Java のバージョン履歴を参照してください。
前提条件
OSS が有効化されていること。Tablestore インスタンスがデプロイされているリージョンにバケットが作成されていること。詳細については、OSS を有効化するを参照してください。
Tablestore サービスリンクロール (AliyunServiceRoleForOTSDataDelivery) が Tablestore コンソールで作成されていること。ロールの Alibaba Cloud Resource Name (ARN) が記録されていること。詳細については、データ配信タスクを作成するを参照してください。
RAM コンソールで以下の操作を実行して、Tablestore サービスリンクロール (AliyunServiceRoleForOTSDataDelivery) の ARN を取得できます。
ロールページで、AliyunServiceRoleForOTSDataDelivery を検索します。次に、RAM ロールの名前をクリックします。ロールの詳細ページで、ロールに関する ARN 情報を表示およびコピーできます。
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスを初期化するを参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。
パラメーター
パラメーター | 説明 |
---|---|
tableName | テーブルの名前。 |
taskName | 配信タスクの名前。 名前は 3 ~ 16 文字で、小文字、数字、ハイフン (-) のみを含めることができます。小文字または数字で開始および終了する必要があります。 |
taskConfig | 配信タスクの構成。有効な値:
|
taskType | データ配信モード。デフォルト値:BASE_INC。有効な値:
|
例
次のサンプルコードは、データテーブルの配信タスクを作成する方法の例を示しています。
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 はオプションです。eventColumn は、列の時刻に基づいてデータをパーティション分割することを指定します。このパラメーターを指定しない場合、データは 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("resquestID: "+ response.getRequestId());
System.out.println("traceID: " + response.getTraceId());
System.out.println("create delivery task success");
}