AnalyticDB for MySQL mendukung pembuatan tabel eksternal untuk OSS, ApsaraDB RDS for MySQL, ApsaraDB for MongoDB, Tablestore, dan MaxCompute.
Prasyarat
Kluster Edisi Perusahaan, Edisi Dasar, atau Edisi Danau Data Terpadu AnalyticDB for MySQL telah dibuat.
Versi minor kluster adalah 3.1.8.0 atau lebih baru.
CatatanUntuk melihat dan memperbarui versi minor, buka bagian Configuration Information pada halaman Cluster Information di Konsol AnalyticDB for MySQL.
Anda harus membuat database eksternal terlebih dahulu. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.
Catatan penggunaan
Hanya tabel eksternal OSS yang mendukung pembuatan lintas akun.
Tabel eksternal OSS
Bucket OSS harus berada di wilayah yang sama dengan kluster AnalyticDB for MySQL.
Untuk membuat tabel eksternal Hudi, Iceberg, atau Paimon, kluster Anda harus memenuhi persyaratan versi minor berikut:
Tabel eksternal Hudi: versi minor kluster 3.1.9.2 atau lebih baru.
Tabel eksternal Iceberg: versi minor kluster 3.2.3.0 atau lebih baru.
Tabel eksternal Paimon: versi minor kluster 3.2.6.1 atau lebih baru.
Untuk melihat dan memperbarui versi minor, buka bagian Configuration Information pada halaman Cluster Information di Konsol AnalyticDB for MySQL.
Setelah membuat tabel eksternal OSS terpartisi, jalankan pernyataan
MSCK REPAIR TABLEuntuk menyinkronkan partisi. Jika tidak, Anda tidak dapat melakukan kueri data dari tabel eksternal tersebut.Untuk membuat tabel eksternal OSS lintas akun, Anda harus menambahkan parameter yang diperlukan saat membuat database eksternal. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.
Sintaksis
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 | Menentukan nama dan skema tabel. Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan. Penting Saat membuat tabel eksternal Paimon, nama tabel, nama kolom, dan tipe data kolom harus sama dengan yang ada di file Paimon. Jika skema tabel (nama atau tipe bidang) tidak sesuai dengan skema Paimon, maka skema Paimon yang berlaku. |
| Tidak | Menentukan kolom kunci partisi. Parameter ini wajib saat membuat tabel eksternal terpartisi. Untuk membuat tabel partisi multi-level, tentukan beberapa kolom kunci partisi. |
| Ya | Menentukan pemisah kolom. Anda dapat menentukan karakter apa pun, tetapi harus sesuai dengan pemisah di file sumber. Topik ini menggunakan koma (,) sebagai contoh. Penting Parameter ini hanya didukung saat Anda menentukan |
| Ya | Menentukan format file. Jika file dalam format .txt atau .csv, atur parameter ini ke File dalam format Penting Hanya kluster dengan versi minor 3.1.8.0 atau lebih baru yang mendukung file |
| Ya | Menentukan path file atau direktori OSS. Saat menentukan path direktori OSS, ikuti aturan berikut. Jika tidak, kueri dapat gagal atau menghasilkan hasil yang tidak diharapkan.
Saat membuat tabel eksternal terpartisi, atur LOCATION ke direktori induk partisi. Misalnya, jika path file OSS adalah Penting
|
| Tidak | Tipe tabel eksternal Hudi. Nilai yang valid:
Penting Parameter ini wajib hanya saat |
| Tidak | Menentukan apakah path file atau direktori OSS dibuat secara otomatis. Nilai yang valid:
Penting Parameter ini hanya berlaku saat membuat tabel eksternal terpartisi. |
| Tidak | Menentukan 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 P*****.
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 terpartisi
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 terpartisi 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, buka Konsol AnalyticDB for MySQL dan aktifkan sakelar antarmuka jaringan elastis (ENI) pada halaman Cluster Information. Mengaktifkan atau menonaktifkan jaringan ENI akan mengganggu koneksi database selama sekitar 2 menit. Selama periode ini, Anda tidak dapat membaca atau menulis data ke database. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan jaringan ENI.
Instans ApsaraDB RDS for MySQL dan kluster AnalyticDB for MySQL harus berada di virtual private cloud (VPC) yang sama.
Sintaksis
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 | Menentukan nama dan struktur tabel. Untuk informasi lebih lanjut tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan. |
| Ya | Mesin penyimpanan tabel eksternal. Untuk membaca atau menulis data ke database ApsaraDB RDS for MySQL, atur parameter ini ke MYSQL. |
| Ya | Properti tabel eksternal. |
| Ya | Titik akhir VPC, nomor port, dan nama database instans ApsaraDB RDS for MySQL. Untuk informasi lebih lanjut tentang cara mendapatkan titik akhir VPC, lihat Lihat atau ubah titik akhir internal dan publik serta nomor port. |
| Ya | Nama tabel di database ApsaraDB RDS for MySQL. |
| Ya | Username untuk database ApsaraDB RDS for MySQL. |
| Ya | Password untuk akun database ApsaraDB RDS for MySQL. |
| Tidak | Set karakter 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 ApsaraDB for MongoDB, aktifkan sakelar antarmuka jaringan elastis (ENI) pada halaman Cluster Information di Konsol AnalyticDB for MySQL. Mengaktifkan atau menonaktifkan jaringan ENI akan mengganggu koneksi database selama sekitar 2 menit. Selama periode ini, Anda tidak dapat membaca atau menulis ke database. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan jaringan ENI.
Instans tabel eksternal ApsaraDB for MongoDB harus berada di virtual private cloud (VPC) yang sama dengan kluster AnalyticDB for MySQL.
Sintaksis
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 | Menentukan nama dan struktur tabel. Untuk informasi lebih lanjut tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan. |
| Ya | Mesin penyimpanan untuk tabel eksternal. Untuk membaca dan menulis data ke ApsaraDB for MongoDB, atur parameter ini ke MONGODB. |
| Ya | Properti tabel eksternal. |
Ya | Nama koleksi ApsaraDB for MongoDB. | |
Ya | ||
Ya | Catatan | |
Ya |
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 dikaitkan dengan virtual private cloud (VPC), VPC yang dikaitkan harus sama dengan VPC tempat kluster AnalyticDB for MySQL berada.
Sintaksis
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 | Menentukan nama dan struktur tabel. Untuk konvensi penamaan nama tabel dan kolom, lihat Konvensi penamaan. |
| Ya | Mesin penyimpanan untuk tabel eksternal. Atur parameter ini ke |
| Ya | Nama tabel di instans Tablestore. Login ke Konsol Tablestore dan temukan nama tabel di halaman Instance Management. |
| Ya | Titik akhir VPC instans Tablestore. Login ke Konsol Tablestore dan temukan titik akhir VPC instans di halaman Instance Management. |
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 dan kluster AnalyticDB for MySQL harus berada di wilayah yang sama.
Untuk membuat tabel eksternal MaxCompute secara massal, lihat IMPORT FOREIGN SCHEMA.
Sintaksis
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 | Menentukan nama dan skema tabel. Skema harus mencakup kolom kunci partisi.
Catatan Tipe data kompleks MaxCompute didukung mulai versi minor 3.2.1.0. Untuk informasi lebih lanjut tentang tipe data kompleks, lihat Tipe data kompleks. Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, login ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information. |
| Ya | Mesin penyimpanan untuk tabel eksternal. Atur ke |
| Ya | Titik akhir MaxCompute. Catatan Anda hanya dapat mengakses MaxCompute melalui titik akhir virtual private cloud (VPC). Untuk informasi lebih lanjut tentang cara melihat titik akhir MaxCompute, lihat Endpoints. |
| Ya | ID AccessKey Akun Alibaba Cloud Anda atau Pengguna RAM yang memiliki izin untuk mengakses MaxCompute. Untuk informasi lebih lanjut tentang cara mendapatkan ID AccessKey dan AccessKey Secret, lihat Akun dan izin. |
| Ya | AccessKey Secret Akun Alibaba Cloud Anda atau Pengguna RAM yang memiliki izin untuk mengakses MaxCompute. Untuk informasi lebih lanjut tentang cara mendapatkan ID AccessKey dan AccessKey Secret, lihat Akun dan izin. |
| Tidak | Kolom kunci partisi. Parameter ini wajib jika tabel MaxCompute adalah tabel terpartisi. |
| 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"
}';Dokumen terkait
Tabel eksternal OSS: Impor data OSS ke edisi danau data terpadu.
Tabel eksternal ApsaraDB RDS for MySQL: Impor data ApsaraDB RDS for MySQL.
Tabel eksternal ApsaraDB for MongoDB: Impor data ApsaraDB for MongoDB.
Tabel eksternal Tablestore: Kueri dan impor data Tablestore.
Tabel eksternal MaxCompute: Impor data MaxCompute.