全部产品
Search
文档中心

Tablestore:Buat tugas pengiriman

更新时间:Jul 06, 2025

Untuk mengirimkan data dari tabel data Tablestore ke Bucket OSS (Object Storage Service), Anda dapat memanggil operasi CreateDeliveryTask guna membuat tugas pengiriman.

Penting

Pastikan bahwa versi Tablestore SDK untuk Go yang terpasang mendukung fitur pengiriman data.

Prasyarat

  • OSS telah diaktifkan. Sebuah bucket dibuat di wilayah tempat instance Tablestore diterapkan. Untuk informasi lebih lanjut, lihat Aktifkan OSS.

  • Peran terkait layanan Tablestore (AliyunServiceRoleForOTSDataDelivery) dibuat di konsol Tablestore. Nama ARN peran tersebut dicatat. Untuk informasi lebih lanjut, lihat Buat Tugas Pengiriman Data.

    Anda dapat melakukan operasi berikut di konsol RAM untuk mendapatkan ARN dari peran terkait layanan Tablestore (AliyunServiceRoleForOTSDataDelivery):

    Di halaman Roles, cari AliyunServiceRoleForOTSDataDelivery. Lalu, klik nama peran RAM. Di halaman detail peran, Anda dapat melihat dan menyalin informasi ARN tentang peran tersebut.

  • Sebuah instance TableStoreClient diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.

  • Tabel data dibuat, dan data ditulis ke tabel data tersebut.

Parameter

Parameter

Deskripsi

TableName

Nama tabel data.

TaskName

Nama tugas pengiriman.

Nama harus memiliki panjang 3 hingga 16 karakter dan hanya boleh berisi huruf kecil, angka, dan tanda hubung (-). Nama harus dimulai dan diakhiri dengan huruf kecil atau angka.

TaskConfig

Konfigurasi tugas pengiriman, yang mencakup konten berikut:

  • OssPrefix: awalan direktori di bucket. Data dikirimkan dari Tablestore ke direktori ini. Jalur direktori tujuan mendukung variabel waktu berikut: $yyyy, $MM, $dd, $HH, dan $mm.

    • Ketika jalur menggunakan variabel waktu untuk pengiriman, direktori OSS dibuat secara dinamis berdasarkan waktu ketika data ditulis. Dengan cara ini, data dipartisi berdasarkan konvensi penamaan yang digunakan saat Hive mempartisi data. Objek di OSS diorganisasikan, dipartisi, dan didistribusikan berdasarkan waktu.

    • Ketika jalur tidak menggunakan variabel waktu, semua file dikirimkan ke direktori OSS yang namanya berisi awalan tertentu.

  • OssBucket: nama Bucket OSS.

  • OssEndpoint: titik akhir wilayah tempat Bucket OSS diterapkan.

  • OssRoleName: ARN dari peran terkait layanan Tablestore.

  • Format: format data yang dikirimkan. Data yang dikirimkan disimpan dalam format Parquet. Secara default, fitur pengiriman data menggunakan PLAIN untuk mengkodekan data dari semua jenis.

  • EventTimeColumn: kolom waktu kejadian. Parameter ini menentukan bahwa data dipartisi berdasarkan waktu kolom. Jika Anda tidak menentukan parameter ini, data dipartisi berdasarkan waktu ketika data ditulis ke Tablestore.

  • Schema: menentukan kolom yang ingin Anda kirimkan. Anda harus menentukan bidang sumber, bidang tujuan, dan tipe bidang tujuan untuk mengirimkan kolom-kolom tersebut.

    Anda dapat menentukan nama bidang sumber dan tujuan serta urutan pengiriman bidang sumber dalam skema. Setelah data dikirimkan ke OSS, data tersebut didistribusikan berdasarkan urutan bidang dalam skema.

    Penting

    Tipe data harus konsisten antara bidang sumber dan tujuan. Jika tidak, bidang tersebut akan diabaikan sebagai data kotor. Untuk informasi lebih lanjut tentang pemetaan tipe bidang, lihat Pemetaan tipe data.

TaskType

Jenis tugas pengiriman. Nilai default: BaseIncTask. Nilai valid:

  • IncTask: jenis pengiriman data tambahan. Hanya data tambahan yang disinkronkan.

  • BaseTask: jenis pengiriman data penuh. Semua data dalam tabel dipindai dan disinkronkan.

  • BaseIncTask: jenis pengiriman data diferensial. Setelah data penuh disinkronkan, Tablestore menyinkronkan data tambahan.

    Ketika Tablestore menyinkronkan data tambahan, Anda dapat melihat waktu terakhir data dikirimkan dan status saat ini dari tugas pengiriman.

Contoh

Kode sampel berikut memberikan contoh cara membuat tugas pengiriman untuk tabel data:

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)
}