Tablestore データテーブルから OSS バケットへデータを配信するには、CreateDeliveryTask 操作を使用して配信タスクを作成します。
データレイク配信機能には、Tablestore SDK for Java 5.10.3 以降が必要です。正しい SDK バージョンがインストールされていることを確認してください。詳細については、「Java SDK リリースノート」をご参照ください。
前提条件
-
OSS を有効化し、ご利用の Tablestore インスタンスと同じリージョンにバケットを作成します。詳細については、「OSS の有効化」をご参照ください。
-
コンソールで Tablestore のサービスリンクロールを作成し、その ARN を記録します。詳細については、「配信タスクの作成」をご参照ください。
サービスリンクロールの ARN を取得するには、RAM コンソールで以下の手順を実行します。
Resource Access Management (RAM) コンソールの ロール ページで、
AliyunServiceRoleForOTSDataDeliveryを検索し、ロール名をクリックします。ロールの詳細ページで、ARN を表示してコピーします。
-
OTSClientを初期化します。詳細については、「Tablestore クライアントの初期化」をご参照ください。 -
データテーブルを作成し、データを書き込みます。
パラメーター
パラメーター | 説明 |
|---|---|
tableName | テーブルの名前です。 |
taskName | 配信タスクの名前です。 名前は 3~16 文字で、小文字、数字、ハイフン (-) のみを使用できます。先頭および末尾は小文字または数字である必要があります。 |
taskConfig | 配信タスクの構成です。有効な値は次のとおりです。
|
taskType | データ配信モードです。デフォルト値は BASE_INC です。有効な値は次のとおりです:
|
例
以下の例は、データテーブルの配信タスクを作成する方法を示しています。
private static void createDeliveryTask(SyncClient client) {
String tableName = "<TABLE_NAME>";
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");
// eventTimeColumn パラメーターはオプションです。イベント時間パーティション分割に使用するカラムを指定します。
// このパラメーターを設定しない場合、データは 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("create delivery task success");
}