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
AliyunServiceRoleForOTSDataDeliverydan 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 ( |
|
taskConfig (required) |
OSSTaskConfig |
Konfigurasi pengiriman OSS. |
|
taskType (required) |
DeliveryTaskType |
Jenis tugas pengiriman. Nilai yang valid: |
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 |
|
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 |
|
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 |
|
eventTimeColumn (optional) |
EventColumn |
Kolom waktu event. Jika parameter ini ditentukan, variabel waktu di |
|
format (optional) |
OSSFileFormat |
Format file OSS. Nilai default dan satu-satunya yang didukung adalah |
|
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: |
|
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: |
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);