Sebelum menggunakan SDK Tablestore untuk mengirimkan data, Anda perlu memahami catatan penggunaan dan operasi. Anda dapat membuat tugas pengiriman di konsol Tablestore untuk mengirimkan data dari tabel Tablestore ke Bucket OSS.
Catatan Penggunaan
Pengiriman data tersedia di wilayah China (Hangzhou), China (Shanghai), China (Beijing), China (Shenzhen), dan China (Zhangjiakou).
Operasi penghapusan pada data Tablestore diabaikan selama proses pengiriman. Data yang dikirimkan ke OSS tidak akan dihapus meskipun Anda melakukan operasi penghapusan pada data tersebut.
Diperlukan waktu maksimal satu menit untuk inisialisasi saat membuat tugas pengiriman.
Latensi berada dalam 3 menit ketika data ditulis dengan laju stabil. Latensi P99 berada dalam 10 menit ketika data disinkronkan.
CatatanLatensi P99 menunjukkan latensi rata-rata dari 1% permintaan terlambat selama 10 detik sebelumnya.
Prasyarat
Operasi berikut dilakukan di konsol Object Storage Service (OSS):
OSS telah diaktifkan. Sebuah bucket dibuat di wilayah tempat instance Tablestore berada. Untuk informasi lebih lanjut, lihat Aktifkan OSS.
CatatanPengiriman data memungkinkan Anda mengirimkan data dari instance Tablestore ke bucket OSS yang berada di wilayah yang sama dengan instance Tablestore. Untuk mengirimkan data ke gudang lain, seperti MaxCompute, submit a ticket.
Operasi berikut dilakukan di konsol Tablestore:
Endpoint instance Tablestore diperoleh dari tab Detail Instance pada halaman Manajemen Instance. Untuk informasi lebih lanjut, lihat Endpoints.
Sebuah tabel data dibuat. Untuk informasi lebih lanjut, lihat Operasi pada tabel data.
Operasi berikut dilakukan di konsol Resource Access Management (RAM):
Seorang pengguna RAM dibuat dan kebijakan AliyunOTSFullAccess dilampirkan ke pengguna RAM untuk memberikan izin kepada pengguna RAM mengelola Tablestore. Untuk informasi lebih lanjut, lihat Buat pengguna RAM dan Berikan izin kepada pengguna RAM.
PeringatanJika pasangan AccessKey akun Alibaba Cloud Anda bocor, sumber daya Anda terpapar pada risiko potensial. Kami merekomendasikan agar Anda menggunakan pasangan AccessKey pengguna RAM untuk melakukan operasi. Ini mencegah pasangan AccessKey akun Alibaba Cloud Anda dari kebocoran.
Pasangan AccessKey dibuat untuk pengguna RAM. Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.
Kredensial akses dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan kredensial akses.
Operasi
Operasi | Deskripsi |
CreateDeliveryTask | Membuat tugas pengiriman. |
ListDeliveryTask | Menampilkan informasi tentang semua tugas pengiriman yang dibuat untuk tabel data. |
DescribeDeliveryTask | Mengambil informasi deskriptif tentang tugas pengiriman. |
DeleteDeliveryTask | Menghapus tugas pengiriman. |
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:
|
taskType | Tipe tugas pengiriman. Nilai default: BASE_INC. Nilai valid:
|
Gunakan SDK Tablestore
Anda dapat menggunakan Tablestore SDK for Java dan Tablestore SDK for Go untuk mengirimkan data ke OSS. Dalam contoh ini, Tablestore SDK for Java digunakan.
Berikut adalah kode sampel yang menunjukkan cara membuat tugas pengiriman untuk tabel data:
// Komentar dalam bahasa Indonesia
import com.alicloud.openservices.tablestore.ClientException;
import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.TableStoreException;
import com.alicloud.openservices.tablestore.model.delivery.*;
public class DeliveryTask {
public static void main(String[] args) {
// Tentukan nama instance.
final String instanceName = "yourInstanceName";
// Tentukan endpoint instance.
final String endPoint = "yourEndpoint";
// Dapatkan ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
SyncClient client = new SyncClient(endPoint, accessKeyId, accessKeySecret, instanceName);
try {
createDeliveryTask(client);
System.out.println("end");
} catch (TableStoreException e) {
System.err.println("Operasi gagal. Detail:" + e.getMessage() + e.getErrorCode() + e.toString());
System.err.println("ID Permintaan:" + e.getRequestId());
} catch (ClientException e) {
System.err.println("Permintaan gagal. Detail:" + e.getMessage());
} finally {
client.shutdown();
}
}
private static void createDeliveryTask(SyncClient client){
String tableName = "sampleTable";
String taskName = "sampledeliverytask";
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");
// Parameter eventColumn bersifat opsional. Jika Anda menentukan parameter ini, data dipartisi berdasarkan waktu data di kolom yang ditentukan oleh parameter ini. Jika Anda tidak menentukan parameter ini, data dipartisi berdasarkan waktu penulisan data ke Tablestore.
EventColumn eventColumn = new EventColumn("Col1", 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");
}
}