Topik ini menjelaskan cara mengkueri dan mengimpor data Tablestore di AnalyticDB for MySQL Data Lakehouse Edition (V3.0).
Prasyarat
Sebuah kluster AnalyticDB for MySQL Data Lakehouse Edition (V3.0) telah dibuat. Untuk informasi lebih lanjut, lihat Buat Kluster.
CatatanJika sebuah virtual private cloud (VPC) terhubung ke instance Tablestore yang dibuat, pastikan bahwa kluster AnalyticDB for MySQL dibuat di VPC yang sama.
Informasi latar belakang
Sebuah instance Tablestore adalah entitas yang digunakan untuk mengelola tabel dan data di Tablestore. Setiap instance setara dengan sebuah database. Sebuah instance Tablestore sesuai dengan skema atau database AnalyticDB for MySQL. Jika tidak ada VPC yang terhubung ke instance Tablestore, Anda dapat langsung mengakses data Tablestore dari AnalyticDB for MySQL. Jika sebuah VPC terhubung ke instance Tablestore, pastikan bahwa kluster AnalyticDB for MySQL dibuat di VPC yang sama.
Data sampel
Dalam contoh ini, sebuah tabel bernama person dibuat di Tablestore dan empat entri dimasukkan ke dalam tabel. Jika Anda telah membuat data sumber, lewati langkah ini.
id (kunci utama) | nama | usia |
1 | james | 10 |
2 | bond | 20 |
3 | jack | 30 |
4 | lucy | 40 |
Prosedur
Pergi ke Editor SQL.
Masuk ke Konsol AnalyticDB for MySQL. Di sudut kiri atas konsol, pilih wilayah. Di panel navigasi di sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola dan klik ID kluster.
Di panel navigasi di sebelah kiri, pilih .
Buat Database Eksternal.
Dalam contoh ini, sebuah database bernama
adb_external_dbdibuat. Contoh pernyataan:create external database adb_external_db;Buat Tabel Eksternal.
CatatanTabel eksternal AnalyticDB for MySQL harus memiliki nama, jumlah, dan urutan bidang yang sama dengan tabel Tablestore. Tipe data bidang harus kompatibel antara kedua tabel tersebut. Untuk informasi tentang pemetaan tipe data, lihat bagian "Pemetaan Tipe Data" dari topik ini.
Dalam contoh ini, sebuah tabel bernama
persondibuat di databaseadb_external_db. Contoh pernyataan:CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_db.person ( id int, name string, age int ) ENGINE = 'OTS' TABLE_PROPERTIES = '{ "mapped_name":"person", "location":"https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com" }'Parameter
Deskripsi
ENGINE='OTS'Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data Tablestore, atur mesin penyimpanan ke OTS.
mapped_nameNama tabel di instance Tablestore. Untuk melihat nama tabel, masuk ke Konsol Tablestore dan buka halaman Semua Instance.
locationURL VPC dari instance Tablestore. Untuk melihat URL VPC, masuk ke Konsol Tablestore dan buka halaman Semua Instances.
Setelah tabel eksternal dibuat, AnalyticDB for MySQL secara otomatis memetakan data dari tabel Tablestore ke tabel AnalyticDB for MySQL. Eksekusi pernyataan SELECT berikut di AnalyticDB for MySQL untuk mengkueri data tabel
persondi instance Tablestore:select * from adb_external_db.person;Informasi berikut dikembalikan:
+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 3 | jack | 30 | | 4 | lucy | 40 | +------+-------+------+ 4 baris dalam set (0,35 detik)Lakukan langkah-langkah berikut untuk mengimpor data dari Tablestore ke AnalyticDB for MySQL:
Buat Database di AnalyticDB for MySQL.
CREATE DATABASE adb_demo;Buat Tabel di AnalyticDB for MySQL untuk menyimpan data yang diimpor dari Tablestore.
CatatanTabel yang dibuat harus menggunakan jumlah dan urutan bidang yang sama dengan tabel eksternal yang dibuat pada Langkah 3. Tipe data bidang harus kompatibel antara kedua tabel tersebut.
CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test( id int, name string, age int ) DISTRIBUTED BY HASH(id);Tulis Data ke Tabel.
Metode 1: Eksekusi pernyataan INSERT INTO untuk mengimpor data. Jika kunci utama memiliki nilai duplikat, data tidak akan dimasukkan ulang dan pernyataan INSERT INTO setara dengan pernyataan
INSERT IGNORE INTO. Untuk informasi lebih lanjut, lihat INSERT INTO.INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;Eksekusi pernyataan SELECT untuk mengkueri data yang ditulis ke tabel.
select * from adb_demo.adb_import_test;Informasi berikut dikembalikan:
+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 3 | jack | 30 | | 4 | lucy | 40 | +------+-------+------+Metode 2: Eksekusi pernyataan INSERT OVERWRITE untuk mengimpor data. Jika kunci utama memiliki nilai duplikat, nilai asli akan ditimpa oleh nilai baru.
INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;Metode 3: Secara asinkron eksekusi pernyataan INSERT OVERWRITE INTO untuk mengimpor data. Dalam banyak kasus,
SUBMIT JOBdigunakan untuk mengirim pekerjaan asinkron. Anda dapat menambahkan petunjuk (/*+ direct_batch_load=true*/) sebelum pernyataan impor data untuk mempercepat pekerjaan. Untuk informasi lebih lanjut, lihat bagian "Penulisan Asinkron" dari topik INSERT OVERWRITE SELECT.SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;Informasi berikut dikembalikan:
+---------------------------------------+ | job_id | +---------------------------------------+ | 2020112122202917203100908203303****** |Untuk informasi tentang cara mengirim pekerjaan asinkron, lihat Kirim Pekerjaan Impor secara Asinkron.
Pemetaan tipe data
Tabel berikut menjelaskan pemetaan tipe data antara Tablestore dan AnalyticDB for MySQL.
Tipe data yang didukung oleh Tablestore | Tipe data yang didukung oleh AnalyticDB for MySQL |
INTEGER (8 byte) | BIGINT (8 byte) |
STRING | VARCHAR |
BINARY | BINARY |
DOUBLE | DOUBLE |
BOOLEAN | BOOLEAN |