全部产品
Search
文档中心

Tablestore:Buat tugas pengiriman

更新时间:Jul 06, 2025

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

Penting

Tablestore SDK for Java V5.10.3 dan versi lebih baru mendukung fitur pengiriman data. Pastikan Anda menggunakan versi Tablestore SDK for Java yang mendukung fitur ini. Untuk informasi lebih lanjut tentang Tablestore SDK for Java, lihat Riwayat Versi Tablestore SDK for Java.

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) telah dibuat di konsol Tablestore. Nama Sumber Daya Alibaba Cloud (ARN) dari peran tersebut telah 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 OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.

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

Parameter

Parameter

Deskripsi

tableName

Nama tabel.

taskName

Nama tugas pengiriman.

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

taskConfig

Konfigurasi tugas pengiriman. Nilai valid:

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

    • Saat jalur menggunakan variabel waktu untuk pengiriman, folder 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 diorganisir, dipartisi, dan didistribusikan berdasarkan waktu.

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

  • ossBucket: nama bucket OSS.

  • ossEndpoint: alamat layanan wilayah tempat bucket OSS diterapkan.

  • ossStsRole: Nama Sumber Daya Alibaba Cloud (ARN) dari peran terkait layanan Tablestore.

  • format: format data yang dikirimkan. Data yang dikirimkan disimpan dalam format Parquet. Secara default, layanan pengiriman menggunakan PLAIN untuk mengkodekan data dari jenis apa pun.

  • 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.

  • parquetSchema: menentukan kolom yang ingin Anda kirimkan. Anda harus mengonfigurasi bidang sumber, bidang tujuan, dan tipe bidang tujuan untuk pengiriman.

    Urutan pengurutan bidang di Tablestore bisa berbeda dari urutan bidang dalam skema. Data Parquet yang disimpan di OSS didistribusikan berdasarkan urutan bidang dalam skema.

    Penting

    Tipe data harus konsisten antara bidang sumber dan tujuan. Jika tipe data antara bidang tidak konsisten, bidang tersebut akan dibuang sebagai data kotor. Untuk informasi lebih lanjut tentang pemetaan tipe bidang, lihat bagian "Pemetaan tipe data" dari topik Memulai cepat.

taskType

Mode pengiriman data. Nilai default: BASE_INC. Nilai valid:

  • INC: mode pengiriman data tambahan. Hanya data tambahan yang disinkronkan.

  • BASE: mode pengiriman data penuh. Semua data dalam tabel dipindai dan disinkronkan.

  • BASE_INC: mode pengiriman data diferensial. Setelah data penuh disinkronkan, Tablestore menyinkronkan data tambahan. Saat Anda menyinkronkan data dalam mode tambahan, Anda dapat melihat waktu ketika data terakhir dikirimkan dan status tugas pengiriman saat ini.

Contoh

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

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 bersifat opsional. eventColumn menentukan bahwa data dipartisi berdasarkan waktu kolom. Jika Anda tidak menentukan parameter ini, data dipartisi berdasarkan waktu ketika data ditulis ke 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");
}