AnalyticDB for MySQL mendukung pembuatan berbagai jenis tabel eksternal, seperti tabel eksternal OSS, RDS MySQL, MongoDB, Tablestore, dan MaxCompute.
Prasyarat
Kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse telah dibuat.
Versi kernel kluster adalah 3.1.8.0 atau lebih baru.
CatatanUntuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Database eksternal harus dibuat terlebih dahulu. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.
Catatan penggunaan
Pembuatan lintas akun hanya didukung untuk tabel eksternal OSS.
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: Versi kernel kluster harus 3.2.3.0 atau lebih baru.
Tabel eksternal Paimon: Versi kernel kluster harus 3.2.4.0 atau lebih baru.
Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Setelah membuat tabel eksternal OSS terpartisi, Anda harus menjalankan pernyataan
MSCK REPAIR TABLEuntuk menyinkronkan partisi tabel eksternal tersebut. Jika tidak, Anda tidak dapat mengkueri data dari tabel eksternal tersebut.Untuk membuat tabel eksternal OSS lintas akun Alibaba Cloud, 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|RCFIL|HUDI|ICEBERG|PAIMON}
LOCATION 'OSS_LOCATION';
[TBLPROPERTIES (
'type' = 'cow|mor'
'auto.create.location' = 'true|false')
'metadata_location' = 'METADATA_LOCATION')]Parameter
Parameter | Wajib | Deskripsi |
| Ya | 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. Nama tabel dan nama kolom harus menggunakan huruf kecil. |
| Tidak | Saat membuat tabel eksternal terpartisi, Anda harus mengonfigurasi parameter ini untuk menentukan kolom kunci partisi. Jika Anda menentukan beberapa kolom kunci partisi, tabel partisi multi-level akan dibuat. |
| Ya | Pemisah kolom. Anda dapat menentukan simbol apa pun, tetapi harus sama dengan pemisah dalam file. Topik ini menggunakan koma (,) sebagai contoh. Penting Parameter ini hanya didukung ketika |
| Ya | Format file. Jika file berformat .txt atau .csv, atur parameter ini menjadi File dalam format Penting Hanya kluster dengan versi kernel 3.1.8.0 atau lebih baru yang mendukung file |
| Ya | Jalur file atau folder OSS. Saat menentukan jalur folder OSS, ikuti aturan berikut. Jika tidak, kueri mungkin gagal atau mengembalikan hasil yang tidak normal.
Saat membuat tabel eksternal terpartisi, atur LOCATION ke direktori induk partisi. Misalnya, jalur file OSS adalah Penting
|
| Tidak | Jenis tabel eksternal Hudi. Nilai yang valid:
Penting Parameter ini wajib hanya ketika |
| Tidak | Menentukan apakah akan membuat jalur file atau folder OSS secara otomatis. Nilai yang valid:
Penting Parameter ini hanya berlaku saat membuat tabel eksternal terpartisi. |
| Tidak | Jalur file metadata untuk tabel eksternal Iceberg. Penting
|
Contoh
Contoh 1: Membuat tabel eksternal non-partisi
Atur format penyimpanan file ke 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';Atur format penyimpanan file ke 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');Atur format penyimpanan file ke 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';Atur format penyimpanan file ke 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');Atur format penyimpanan file ke 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: Membuat 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: Membuat 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 RDS MySQL
Untuk membuat tabel eksternal ApsaraDB RDS for MySQL, Anda harus terlebih dahulu mengaktifkan antarmuka jaringan elastis (ENI) pada halaman Cluster Information di Konsol AnalyticDB for MySQL. Saat Anda mengaktifkan atau menonaktifkan ENI, koneksi database mungkin terputus selama sekitar 2 menit. Selama periode ini, Anda tidak dapat melakukan operasi baca atau tulis. Aktifkan atau nonaktifkan ENI dengan hati-hati.
Instans RDS MySQL 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='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 | Nama dan skema tabel. Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan. |
| Ya | Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke RDS MySQL, atur nilainya menjadi MYSQL. |
| Ya | Properti tabel eksternal. |
| Ya | Titik akhir internal, nomor port, dan nama database instans RDS MySQL. Untuk informasi tentang cara mendapatkan titik akhir internal instans RDS, lihat Melihat atau mengubah titik akhir internal dan publik serta port. |
| Ya | Nama tabel di RDS MySQL. |
| Ya | Akun database RDS MySQL. |
| Ya | Kata sandi akun database RDS 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 MongoDB
Sebelum membuat tabel eksternal MongoDB, Anda harus mengaktifkan antarmuka jaringan elastis (ENI) pada halaman Cluster Information di Konsol AnalyticDB for MySQL. Saat Anda mengaktifkan atau menonaktifkan ENI, koneksi database mungkin terputus selama sekitar 2 menit. Selama periode ini, Anda tidak dapat melakukan operasi baca atau tulis. Aktifkan atau nonaktifkan ENI dengan hati-hati.
Instans MongoDB harus berada di 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 | Nama dan skema tabel. Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan. |
| Ya | Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke MongoDB, atur nilainya menjadi MONGODB. |
| Ya | Properti tabel eksternal. |
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 dilampirkan ke VPC, instans tersebut harus berada di VPC yang sama dengan kluster AnalyticDB for MySQL.
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 | Nama dan skema tabel. Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan. |
| Ya | Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke Tablestore, atur nilainya menjadi OTS. |
| Ya | Nama tabel di instans Tablestore. Anda dapat masuk ke Konsol Tablestore dan melihat nama tabel di halaman Manajemen Instans. |
| Ya | Titik akhir VPC instans Tablestore. Anda dapat masuk ke Konsol Tablestore dan melihat titik akhir VPC instans di halaman Manajemen Instans. |
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 membuat tabel eksternal MaxCompute secara batch, 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 | Nama dan skema tabel. Skema tabel harus mencakup kolom kunci partisi. table_name dan column_name: nama tabel dan nama kolom. Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan. column_type: tipe data dasar MaxCompute dan tipe data kompleks (ARRAY, MAP, dan STRUCT) didukung. Catatan Tipe data kompleks MaxCompute didukung pada versi 3.2.1.0 dan lebih baru. Untuk informasi selengkapnya tentang tipe data kompleks, lihat Tipe data kompleks. Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information. |
| Ya | Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke MaxCompute, atur nilainya menjadi ODPS. |
| Ya | Endpoint MaxCompute. Catatan Anda hanya dapat mengakses MaxCompute melalui Endpoint VPC. Untuk informasi tentang cara melihat Endpoint MaxCompute, lihat Endpoint. |
| Ya | ID AccessKey akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) yang memiliki izin untuk mengakses MaxCompute. Untuk informasi tentang cara mendapatkan ID AccessKey dan Rahasia AccessKey, lihat Akun dan izin. |
| Ya | Rahasia AccessKey akun Alibaba Cloud atau Pengguna RAM yang memiliki izin untuk mengakses MaxCompute. Untuk informasi tentang cara mendapatkan ID AccessKey dan Rahasia AccessKey, 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"
}';Referensi
Untuk informasi selengkapnya tentang tabel eksternal OSS, lihat Impor data dari OSS ke kluster Edisi Data Lakehouse menggunakan tabel eksternal.
Untuk informasi selengkapnya tentang tabel eksternal RDS MySQL, lihat Impor data dari RDS MySQL menggunakan tabel eksternal.
Untuk informasi selengkapnya tentang tabel eksternal MongoDB, lihat Impor data dari MongoDB menggunakan tabel eksternal.
Untuk informasi selengkapnya tentang tabel eksternal Tablestore, lihat Kueri dan impor data dari Tablestore.
Untuk informasi selengkapnya tentang tabel eksternal MaxCompute, lihat Impor data dari MaxCompute menggunakan tabel eksternal.