すべてのプロダクト
Search
ドキュメントセンター

Tablestore:配信タスクの作成

最終更新日:Sep 21, 2026

Tablestore のデータテーブルから OSS バケットにデータを配信するには、CreateDeliveryTask API を使用して配信タスクを作成します。

重要

インストール済みの Tablestore SDK for Go のバージョンが、データ配信機能をサポートしていることを確認してください。

前提条件

  • OSS が有効化されます。 Tablestore インスタンスがデプロイされているリージョンにバケットが作成されます。 詳細については、「OSS を有効化する」をご参照ください。

  • Table Store のサービスリンクロール (AliyunServiceRoleForOTSDataDelivery) は Table Store コンソールで作成され、ロールの Alibaba Cloud リソースネーム (ARN) が記録されます。詳細については、「配信タスクの作成」をご参照ください。

    Tablestore のサービスリンクロール (AliyunServiceRoleForOTSDataDelivery) の ARN を取得するには、RAM コンソールで次の操作を実行します:

    [ロール] ページで、AliyunServiceRoleForOTSDataDelivery を検索します。次に、RAM ロール名をクリックします。ロール詳細ページで、ロールの ARN 情報を表示およびコピーできます。

  • TableStoreClient インスタンスが初期化されます。 詳細については、「Tablestore クライアントを初期化する」をご参照ください。

  • データテーブルが作成されており、データがデータテーブルに書き込まれていること。

パラメーター

パラメーター

説明

TableName

データテーブルの名前。

TaskName

配信タスクの名前。

名前は 3~16 文字で指定し、小文字、数字、ハイフン (-) のみ使用できます。名前の先頭と末尾は小文字または数字にする必要があります。

TaskConfig

配信タスクの設定。次の内容が含まれます:

  • OssPrefix:バケット内ディレクトリのプレフィックス。Tablestore から当該ディレクトリにデータが配信されます。宛先ディレクトリのパスでは、次の時間変数を使用できます:$yyyy、$MM、$dd、$HH、$mm。

    • 配信でパスに時間変数を使用する場合、データの書き込み時刻に基づいて OSS ディレクトリが動的に生成されます。これにより、Hive がデータをパーティション分割する際の命名規則に従ってデータがパーティション分割されます。OSS 内のオブジェクトは、時間に基づいて整理、パーティション分割、分散されます。

    • パスに時間変数を使用しない場合、すべてのファイルは、指定されたプレフィックスの OSS ディレクトリに配信されます。

  • OssBucket:OSS バケットの名前。

  • OssEndpoint:OSS バケットがデプロイされているリージョンのエンドポイント。

  • OssRoleName:Tablestore のサービスリンクロールの ARN。

  • Format:配信されるデータのフォーマット。配信データは Parquet フォーマットで保存されます。デフォルトでは、データ配信機能は PLAIN を使用してすべてのタイプのデータをエンコードします。

  • EventTimeColumn:イベントタイム列。このパラメーターは、列の時刻に基づいてデータをパーティション分割することを指定します。このパラメーターを指定しない場合、データは Tablestore に書き込まれた時刻に基づいてパーティション分割されます。

  • Schema:配信する列を指定します。列を配信するには、ソースフィールド、宛先フィールド、宛先フィールドタイプを指定する必要があります。

    スキーマでは、ソースフィールドと宛先フィールドの名前、およびスキーマ内でソースフィールドを配信する順序を指定できます。データが OSS に配信された後、データはスキーマ内のフィールドの順序に基づいて分散されます。

    重要

    ソースフィールドと宛先フィールドのデータ型は、一致している必要があります。一致していない場合、フィールドはダーティデータとして破棄されます。フィールド型のマッピングの詳細については、「データ型のマッピング」をご参照ください。

TaskType

配信タスクのタスクタイプ。デフォルト値:BaseIncTask。有効な値:

  • IncTask:増分データの配信タイプ。増分データのみが同期されます。

  • BaseTask:全量データの配信タイプ。テーブル内のすべてのデータがスキャンされ、同期されます。

  • BaseIncTask:全量および増分データの配信タイプ。全量データの同期後、Tablestore が増分データを同期します。

    Tablestore が増分データを同期する際、データが最後に配信された時刻と、配信タスクの現在のステータスを確認できます。

例

次のサンプルコードは、データテーブルの配信タスクを作成する例です:

func CreateTaskSample(client *tablestore.TableStoreClient) {
    createTask := &tablestore.CreateDeliveryTaskRequest{
        TableName: "<TABLE_NAME>",
        TaskName: "<TASK_NAME>",
        TaskType: tablestore.BaseIncTask,
        TaskConfig: &tablestore.OSSTaskConfig{
            OssPrefix:   "sample/year=$yyyy/month=$MM",
            OssBucket:      "datadeliverytest",
            OssEndpoint:    "oss-cn-hangzhou.aliyuncs.com",
            OssRoleName:    "acs:ram::17************45:role/aliyunserviceroleforotsdatadelivery",
            Schema: []*tablestore.TaskSchema{
                {
                    ColumnName: "PK1",
                    OssColumnName: "PK1",
                    Type: tablestore.ParquetInt64,
                },
                {
                    ColumnName: "PK2",
                    OssColumnName: "PK2",
                    Type: tablestore.ParquetUtf8,
                },
                {
                    ColumnName: "Col1",
                    OssColumnName: "Col1",
                    Type: tablestore.ParquetDouble,
                },
            },
        },
    }
    createResp, err := client.CreateDeliveryTask(createTask)
    if err != nil {
        log.Fatal("create delivery task failed ", err)
    }
    fmt.Println("create delivery task success ", createResp.RequestId)
}