All Products
Search
Document Center

Tablestore:Buat tugas pengiriman

Last Updated:Aug 03, 2026

Tablestore SDK untuk Java memungkinkan Anda membuat tugas pengiriman untuk mengirimkan data lengkap, data inkremental, atau keduanya dari tabel data ke bucket OSS di wilayah yang sama.

Prasyarat

Sebelum memulai, pastikan prasyarat berikut terpenuhi:

  • Instal Tablestore SDK untuk Java dan inisialisasi client. Fitur pengiriman data memerlukan versi 5.10.3 atau lebih baru. Disarankan untuk menggunakan versi terbaru.

  • Aktifkan Object Storage Service (OSS) dan buat bucket OSS di wilayah yang sama dengan instans Tablestore. Untuk informasi selengkapnya, lihat Memulai OSS.

  • Buat peran terkait layanan AliyunServiceRoleForOTSDataDelivery dan peroleh Nama Sumber Daya Alibaba Cloud (ARN) peran tersebut. Untuk informasi selengkapnya, lihat Buat tugas pengiriman.

Deskripsi

Panggil metode createDeliveryTask untuk membuat tugas pengiriman. Satu tugas dapat dikonfigurasi untuk mengirimkan data lengkap saja, data inkremental saja, atau mengirimkan data lengkap terlebih dahulu lalu dilanjutkan secara berkelanjutan dengan data inkremental.

public CreateDeliveryTaskResponse createDeliveryTask(CreateDeliveryTaskRequest request)
        throws TableStoreException, ClientException

Setelah tugas pengiriman dibuat, tugas tersebut harus diinisialisasi. Anda dapat memanggil describeDeliveryTask untuk menanyakan informasi tugas pengiriman.

Contoh berikut menunjukkan cara membuat tugas yang mengirimkan data lengkap dan inkremental sekaligus, serta membuat partisi OSS harian berdasarkan waktu penulisan data ke Tablestore. Pada contoh ini, client adalah client yang telah diinisialisasi. Ganti placeholder dengan nilai aktual, dan pastikan kolom pk, event_time, dan active masing-masing bertipe String, String, dan Boolean.

String tableName = "<TABLE_NAME>";
String taskName = "<TASK_NAME>";

OSSTaskConfig taskConfig = new OSSTaskConfig();
taskConfig.setOssPrefix("delivery/year=$yyyy/month=$MM/day=$dd");
taskConfig.setOssBucket("<OSS_BUCKET>");
taskConfig.setOssEndpoint("<OSS_ENDPOINT>");
taskConfig.setOssStsRole("<ROLE_ARN>");
taskConfig.addParquetSchema(new ParquetSchema("pk", "pk", DataType.UTF8));
taskConfig.addParquetSchema(
        new ParquetSchema("event_time", "event_time", DataType.UTF8));
taskConfig.addParquetSchema(new ParquetSchema("active", "active", DataType.BOOL));

CreateDeliveryTaskRequest request =
        new CreateDeliveryTaskRequest(tableName, taskName, taskConfig);
request.setTaskType(DeliveryTaskType.BASE_INC);

client.createDeliveryTask(request);

Parameter

Permintaan pengiriman

request bertipe CreateDeliveryTaskRequest dan berisi parameter berikut.

Name

Type

Description

tableName (required)

String

Nama tabel data.

taskName (required)

String

Nama tugas pengiriman. Nama hanya boleh berisi huruf kecil, angka, tanda hubung (-), dan garis bawah (_). Nama harus diawali dan diakhiri dengan huruf kecil atau angka serta memiliki panjang 3 hingga 16 karakter.

taskConfig (required)

OSSTaskConfig

Konfigurasi pengiriman OSS.

taskType (required)

DeliveryTaskType

Jenis tugas pengiriman. Nilai yang valid: BASE, yang mengirimkan data lengkap sekali; INC, yang hanya mengirimkan data inkremental; dan BASE_INC, yang mengirimkan data lengkap lalu secara berkelanjutan mengirimkan data inkremental.

Konfigurasi pengiriman OSS

request.taskConfig bertipe OSSTaskConfig dan berisi parameter berikut.

Name

Type

Description

ossPrefix (required)

String

Awalan direktori di bucket OSS. Anda dapat menggunakan variabel waktu $yyyy, $MM, $dd, $HH, dan $mm. Jika awalan berisi variabel waktu, partisi OSS dibuat berdasarkan waktu penulisan. Jika eventTimeColumn ditentukan, waktu event digunakan sebagai gantinya. Jika awalan tidak berisi variabel waktu, semua file ditulis ke awalan tetap.

ossBucket (required)

String

Nama bucket OSS. Bucket harus berada di wilayah yang sama dengan instans Tablestore.

ossEndpoint (required)

String

Titik akhir wilayah tempat bucket OSS berada.

ossStsRole (required)

String

ARN dari peran terkait layanan AliyunServiceRoleForOTSDataDelivery.

parquetSchema (required)

List<ParquetSchema>

Bidang yang akan dikirimkan. Anda dapat memilih bidang serta menyesuaikan nama dan urutannya di OSS. Urutan elemen menentukan urutan bidang dalam file Parquet. Panggil addParquetSchema untuk menambahkan bidang satu per satu.

eventTimeColumn (optional)

EventColumn

Kolom waktu event. Jika parameter ini ditentukan, variabel waktu di ossPrefix menggunakan waktu dari kolom ini. Jika tidak, waktu penulisan data ke Tablestore yang digunakan.

format (optional)

OSSFileFormat

Format file OSS. Nilai default dan satu-satunya yang didukung adalah Parquet.

timeFormatter (optional)

TimeFormatter

Parameter format partisi cadangan. SDK saat ini tidak menyertakan parameter ini dalam permintaan. Jangan konfigurasikan parameter ini.

Kolom yang dikirimkan

Setiap elemen dalam request.taskConfig.parquetSchema[] bertipe ParquetSchema dan berisi parameter berikut.

Name

Type

Description

columnName (required)

String

Nama bidang sumber di tabel data Tablestore.

ossColumnName (required)

String

Nama bidang setelah dikirimkan ke OSS.

type (required)

DataType

Jenis tujuan bidang dalam file Parquet. Jenis ini harus sesuai dengan tipe data bidang sumber. Jika tidak, nilai bidang akan dibuang sebagai data kotor. Untuk informasi selengkapnya, lihat Pemetaan tipe data.

encode (optional)

OSSFileEncoding

Encode Parquet. Nilai default: PLAIN, yang mendukung semua tipe bidang yang saat ini didukung.

typeExtend (optional)

String

Parameter tipe ekstensi Parquet cadangan. Parameter ini tidak didukung. Jangan konfigurasikan.

Kolom waktu event

request.taskConfig.eventTimeColumn bertipe EventColumn dan berisi parameter berikut.

Name

Type

Description

columnName (required)

String

Nama bidang sumber yang digunakan sebagai waktu event.

timeFormat (required)

EventTimeFormat

Format waktu event. Nilai yang valid: RFC822, RFC850, RFC1123, RFC3339, dan Unix. Nilai bidang sumber harus sesuai dengan format yang dipilih.

Contoh

Partisi data berdasarkan waktu event

Untuk membuat partisi OSS berdasarkan kolom event_time, konfigurasikan kolom waktu event di taskConfig sebelum membuat permintaan. Pada contoh berikut, nilai dalam kolom tersebut harus sesuai dengan standar RFC 3339.

EventColumn eventColumn =
        new EventColumn("event_time", EventTimeFormat.RFC3339);
taskConfig.setEventTimeColumn(eventColumn);