AnalyticDB for MySQL mendukung pembuatan tabel eksternal untuk OSS, ApsaraDB RDS for MySQL, MongoDB, Tablestore, dan MaxCompute.
Prasyarat
Kluster Enterprise Edition, Basic Edition, atau Data Lakehouse Edition AnalyticDB for MySQL telah dibuat.
Versi kernel kluster adalah 3.1.8.0 atau lebih baru.
CatatanUntuk melihat dan memperbarui versi minor, buka bagian Configuration Information pada halaman Cluster Information di AnalyticDB for MySQL console.
Anda telah membuat database eksternal. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.
Catatan penggunaan
Anda hanya dapat membuat tabel eksternal OSS lintas akun.
Tabel eksternal OSS
Bucket OSS harus berada di wilayah yang sama dengan kluster AnalyticDB for MySQL.
Saat membuat tabel eksternal Hudi, Iceberg, atau Paimon, versi kernel kluster harus memenuhi persyaratan berikut:
Tabel eksternal Hudi: Versi kernel kluster harus 3.1.9.2 atau lebih baru.
Tabel eksternal Iceberg memerlukan versi kernel 3.2.3.0 atau lebih baru.
Tabel eksternal Paimon memerlukan versi kernel 3.2.6.1 atau lebih baru.
Untuk melihat dan memperbarui versi minor, buka bagian Configuration Information pada halaman Cluster Information di AnalyticDB for MySQL console.
Setelah membuat tabel eksternal partisi OSS, jalankan pernyataan
MSCK REPAIR TABLEuntuk menyinkronkan partisinya. Jika tidak, Anda tidak dapat mengkueri data dari tabel tersebut.Untuk membuat tabel eksternal OSS lintas akun, tentukan parameter yang diperlukan saat membuat database eksternal. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.
Sintaks
CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
[PARTITIONED BY (column_name column_type[, …])]
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS {TEXTFILE|ORC|PARQUET|JSON|RCFILE|HUDI|ICEBERG|PAIMON}
LOCATION 'OSS_LOCATION';
[TBLPROPERTIES (
'type' = 'cow|mor'
'auto.create.location' = 'true|false')
'metadata_location' = 'METADATA_LOCATION')]Parameter
Parameter | Wajib | Deskripsi |
| Ya | Definisikan nama tabel dan skema tabel. Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan. Penting Saat membuat tabel eksternal Paimon, nama tabel, nama kolom, dan tipe data kolom harus konsisten dengan file Paimon. Jika skema tabel (nama atau tipe field) tidak konsisten dengan Paimon, skema tabel Paimon yang berlaku. |
| Tidak | Saat membuat tabel eksternal partisi, konfigurasikan parameter ini untuk menentukan kolom kunci partisi. Menentukan beberapa kolom kunci partisi akan membuat tabel partisi multi-level. |
| Ya | Tentukan pemisah kolom. Anda dapat menentukan simbol apa pun, tetapi harus konsisten dengan pemisah dalam file. Topik ini menggunakan koma (,) sebagai contoh. Penting Parameter ini hanya didukung untuk |
| Ya | Tentukan format file. Jika file berformat .txt atau .csv, atur ke File format Penting Hanya kluster dengan versi kernel 3.1.8.0 atau lebih baru yang mendukung file format |
| Ya | Tentukan path file atau direktori OSS. Saat menentukan path direktori OSS, ikuti aturan berikut. Jika tidak, kueri mungkin gagal atau mengembalikan hasil abnormal.
Saat membuat tabel eksternal partisi, tentukan LOCATION sebagai direktori induk partisi. Misalnya, jika path file OSS adalah Penting
|
| Tidak | Tipe tabel eksternal Hudi. Nilai yang valid:
Penting Parameter ini wajib hanya ketika |
| Tidak | Buat path file atau direktori OSS secara otomatis. Nilai yang valid:
Penting Parameter ini hanya berlaku saat membuat tabel eksternal partisi. |
| Tidak | Tentukan path file metadata untuk tabel eksternal Iceberg. Penting
|
Contoh
Contoh 1: Buat tabel eksternal non-partisi
Tentukan format penyimpanan file sebagai TEXTFILE.
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest1 (id int, name string, age int, city string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 'oss://testBucketName/osstest/p1=hangzhou/p2=2023-06-13/data.csv';Tentukan format penyimpanan file sebagai HUDI.
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest2 (id int, name string, age int, city string) STORED AS HUDI LOCATION 'oss://testBucketName/osstest/test' TBLPROPERTIES ('type' = 'cow');Tentukan format penyimpanan file sebagai PARQUET.
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest3 ( A STRUCT < var1:STRING, var2:INT >) STORED AS PARQUET LOCATION 'oss://testBucketName/osstest/Parquet';Tentukan format penyimpanan file sebagai ICEBERG.
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest4 ( user_id BIGINT) STORED AS ICEBERG LOCATION 'oss://testBucketName/osstest/no_partition_table/' TBLPROPERTIES (metadata_location='oss://testBucketName/osstest/no_partition_table/metadata/00000-a32d6136-8490-4ad2-ada3-fe2f7204199f.metadata.json');Tentukan format penyimpanan file sebagai PAIMON.
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest5 ( a INT, b BIGINT, aCa STRING, d VARCHAR(1)) STORED AS PAIMON LOCATION 'oss://testBucketName/osstest/default.db/t1/';
Contoh 2: Buat tabel eksternal partisi
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest6
(id int,
name string,
age int,
city string)
PARTITIONED BY (p2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'oss://testBucketName/osstest/p1=hangzhou/';Contoh 3: Buat tabel eksternal partisi multi-level
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest7
(id int,
name string,
age int,
city string)
PARTITIONED BY (p1 string,p2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'oss://testBucketName/osstest/';Tabel eksternal ApsaraDB RDS for MySQL
Sebelum membuat tabel eksternal ApsaraDB RDS for MySQL, aktifkan ENI pada halaman Cluster Information di AnalyticDB for MySQL console. Mengaktifkan atau menonaktifkan ENI akan mengganggu koneksi database selama sekitar 2 menit dan mencegah operasi baca dan tulis. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan ENI.
Instans ApsaraDB RDS for MySQL harus berada di VPC yang sama dengan kluster AnalyticDB for MySQL.
Sintaks
CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='MYSQL'
TABLE_PROPERTIES='{
"url":"mysql_vpc_address",
"tablename":"mysql_table_name",
"username":"mysql_user_name",
"password":"mysql_user_password"
[,"charset":"{gbk|utf8|utf8mb4}"]
}';Parameter
Parameter | Wajib | Deskripsi |
| Ya | Definisikan nama tabel dan skema tabel. Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan. |
| Ya | Mesin penyimpanan tabel eksternal. Saat membaca dan menulis data RDS MySQL, nilainya adalah MYSQL. |
| Ya | Properti Appearance. |
| Ya | Alamat jaringan internal, nomor port, dan nama database instans RDS MySQL. Untuk informasi cara mendapatkan alamat jaringan internal RDS, lihat Lihat atau ubah alamat dan port jaringan internal serta publik. |
| Ya | Nama tabel RDS MySQL. |
| Ya | Akun database instans RDS MySQL. |
| Ya | Kata sandi akun database instans RDS MySQL. |
| Tidak | Set karakter untuk tabel eksternal MySQL. Nilai yang valid:
|
Contoh
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.mysqltest (
id int,
name varchar(1023),
age int
) ENGINE = 'MYSQL'
TABLE_PROPERTIES = '{
"url":"jdbc:mysql://rm-bp1gx6********.mysql.rds.aliyuncs.com:3306/test_adb",
"tablename":"person",
"username":"testUserName",
"password":"testUserPassword",
"charset":"utf8"
}';Tabel eksternal ApsaraDB for MongoDB
Sebelum membuat tabel eksternal MongoDB, aktifkan ENI pada halaman Cluster Information di AnalyticDB for MySQL console. Mengaktifkan atau menonaktifkan ENI akan mengganggu koneksi database selama sekitar 2 menit dan mencegah operasi baca dan tulis. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan ENI.
Instans MongoDB harus berada di VPC yang sama dengan kluster AnalyticDB for MySQL.
Sintaks
CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='MONGODB'
TABLE_PROPERTIES = '{
"mapped_name":"table",
"location":"location",
"username":"user",
"password":"password",
}';Parameter
Parameter | Wajib | Deskripsi |
| Ya | Definisikan nama tabel dan skema tabel. Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan. |
| Ya | Mesin penyimpanan tabel eksternal. Saat membaca dan menulis data MongoDB, nilainya adalah MONGODB. |
| Ya | Properti Appearance |
mapped_name | Ya | Nama koleksi MongoDB. |
location | Ya | |
username | Ya | Akun database instans MongoDB. Catatan MongoDB memverifikasi akun database dan kata sandi di database tujuan. Gunakan akun database yang ditentukan dalam titik akhir VPC instans MongoDB. Jika Anda memiliki pertanyaan, hubungi dukungan teknis. |
password | Ya | Kata sandi akun database MongoDB. |
Contoh
CREATE EXTERNAL TABLE adb_external_demo.mongodbtest (
id int,
name string,
age int
) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
"mapped_name":"person",
"location":"mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb",
"username":"testuser",
"password":"password",
}';Tabel eksternal Tablestore
Jika instans Tablestore terikat ke VPC, VPC tersebut harus sama dengan VPC tempat kluster AnalyticDB for MySQL berada.
Sintaks
CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OTS'
TABLE_PROPERTIES = '{
"mapped_name":"table_name",
"location":"tablestore_vpc_address"
}';Parameter
Parameter | Wajib | Deskripsi |
| Ya | Definisikan nama tabel dan skema tabel. Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan. |
| Ya | Mesin penyimpanan tabel eksternal. Saat membaca dan menulis data Tablestore, nilainya adalah OTS. |
| Ya | Nama tabel dalam instans Tablestore. Login ke Tablestore console. Di halaman Instance Management, lihat nama tabel instans Tablestore. |
| Ya | Titik akhir VPC instans Tablestore. Login ke Tablestore console. Di halaman Instance Management, lihat titik akhir VPC instans tersebut. |
Contoh
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.otstest (
id int,
name string,
age int
) ENGINE = 'OTS'
TABLE_PROPERTIES = '{
"mapped_name":"person",
"location":"https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
}';Tabel eksternal MaxCompute
Proyek MaxCompute harus berada di wilayah yang sama dengan kluster AnalyticDB for MySQL.
Untuk informasi tentang cara membuat tabel eksternal MaxCompute secara batch, lihat IMPORT FOREIGN SCHEMA.
Sintaks
CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='ODPS'
TABLE_PROPERTIES='{
"endpoint":"endpoint",
"accessid":"accesskey_id",
"accesskey":"accesskey_secret",
["partition_column":"partition_column"],
"project_name":"project_name",
"table_name":"table_name"
}'; Parameter
Parameter | Wajib | Deskripsi |
| Ya | Definisikan nama tabel dan skema tabel. Skema tabel harus mencakup kolom kunci partisi. table_name dan column_name: Nama tabel dan nama kolom. Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan. column_type: Mendukung tipe data dasar MaxCompute dan tipe data kompleks (ARRAY, MAP, STRUCT). Catatan Versi 3.2.1.0 dan lebih baru mendukung tipe data kompleks MaxCompute. Untuk detail tentang tipe data kompleks, lihat Tipe data kompleks. Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, login ke AnalyticDB for MySQL console dan buka bagian Configuration Information pada halaman Cluster Information. |
| Ya | Mesin penyimpanan tabel eksternal. Saat membaca dan menulis data MaxCompute, nilainya adalah ODPS. |
| Ya | Titik akhir Proyek MaxCompute. Catatan Hanya mendukung akses MaxCompute melalui titik akhir VPC. Untuk informasi cara melihat Titik Akhir MaxCompute, lihat Endpoint. |
| Ya | ID AccessKey dari akun Alibaba Cloud atau pengguna Resource Access Management (RAM) dengan izin akses MaxCompute. Untuk informasi cara mendapatkan ID AccessKey dan Secret AccessKey, lihat Akun dan Izin. |
| Ya | Secret AccessKey dari akun Alibaba Cloud atau pengguna Resource Access Management (RAM) dengan izin akses MaxCompute. Untuk informasi cara mendapatkan ID AccessKey dan Secret AccessKey, lihat Akun dan Izin. |
| Tidak | Kolom kunci partisi. Konfigurasikan parameter ini saat tabel MaxCompute adalah tabel partisi. |
| Ya | Nama proyek MaxCompute. |
| Ya | Nama tabel MaxCompute. |
Contoh
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.mctest (
id int,
name varchar(1023),
age int,
dt string
) ENGINE='ODPS'
TABLE_PROPERTIES='{
"accessid":"LTAI****************",
"endpoint":"http://service.cn-hangzhou.maxcompute.aliyun.com/api",
"accesskey":"yourAccessKeySecret",
"partition_column":"dt",
"project_name":"test_adb",
"table_name":"person"
}';Referensi
Tabel eksternal OSS: Impor data OSS ke Edisi Data Lakehouse menggunakan tabel eksternal.
Tabel eksternal RDS MySQL: Impor data RDS MySQL menggunakan tabel eksternal.
Tabel eksternal MongoDB: Impor data MongoDB menggunakan tabel eksternal.
Tabel eksternal Tablestore: Kueri dan impor data Tablestore.
Tabel eksternal MaxCompute: Impor data MaxCompute menggunakan tabel eksternal.