O AnalyticDB for MySQL permite criar vários tipos de tabelas externas, como as do OSS, RDS MySQL, MongoDB, Tablestore e MaxCompute.
Pré-requisitos
Um cluster do AnalyticDB for MySQL Enterprise Edition, Basic Edition ou Data Lakehouse Edition deve estar criado.
-
A versão do kernel do cluster deve ser 3.1.8.0 ou posterior.
NotaPara visualize e atualize a versão secundária, acesse a seção Configuration Information na página Cluster Information no console do AnalyticDB for MySQL.
Crie um banco de dados externo. Para obter mais informações, consulte CREATE EXTERNAL DATABASE.
Notas de uso
A criação entre contas tem suporte apenas para tabelas externas do OSS.
Tabelas externas do OSS
O bucket do OSS deve estar na mesma região do cluster do AnalyticDB for MySQL.
-
Ao criar tabelas externas do Hudi, Iceberg ou Paimon, a versão do kernel do cluster deve atender aos seguintes requisitos:
Tabelas externas do Hudi: a versão do kernel do cluster deve ser 3.1.9.2 ou posterior.
Tabelas externas do Iceberg: a versão do kernel do cluster deve ser 3.2.3.0 ou posterior.
Tabelas externas do Paimon: a versão do kernel do cluster deve ser 3.2.4.0 ou posterior.
Para visualize e atualize a versão secundária, acesse a seção Configuration Information na página Cluster Information no console do AnalyticDB for MySQL.
Após criar uma tabela externa particionada do OSS, execute a instrução
MSCK REPAIR TABLEpara sincronizar as partições. Caso contrário, não será possível consultar dados.Para criar uma tabela externa do OSS entre contas da Alibaba Cloud, adicione os parâmetros necessários ao criar o banco de dados externo. Para obter mais informações, consulte CREATE EXTERNAL DATABASE.
Sintaxe
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')]
Parâmetros
Parâmetro | Obrigatório | Descrição |
| Sim | O nome e o esquema da tabela. Para obter informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. Importante Ao criar uma tabela externa do Paimon, o nome da tabela, os nomes das colunas e os tipos de dados das colunas devem ser idênticos aos do arquivo Paimon. O nome da tabela e os nomes das colunas devem estar em letras minúsculas. |
| Não | Ao criar uma tabela externa particionada, configure este parâmetro para especificar as colunas de chave de partição. Se especificar várias colunas de chave de partição, o sistema criará uma tabela particionada em vários níveis. |
| Sim | O delimitador de coluna. É possível especificar qualquer símbolo, desde que seja igual ao separador usado no arquivo. Este tópico usa a vírgula (,) como exemplo. Importante Este parâmetro tem suporte apenas ao especificar |
| Sim | O formato do arquivo. Se o arquivo estiver no formato .txt ou .csv, defina este parâmetro como Arquivos no formato Importante Apenas clusters com versão de kernel 3.1.8.0 ou posterior suportam arquivos |
| Sim | O caminho do arquivo ou da pasta do OSS. Ao especificar o caminho de uma pasta do OSS, siga estas regras para evitar falhas nas consultas ou resultados anormais.
Ao criar uma tabela externa particionada, defina LOCATION como o diretório pai da partição. Por exemplo, se o caminho de um arquivo do OSS for Importante
|
| Não | O tipo da tabela externa do Hudi. Valores válidos:
Importante Este parâmetro é obrigatório apenas ao especificar |
| Não | Especifica se o caminho do arquivo ou da pasta do OSS é criado automaticamente. Valores válidos:
Importante Este parâmetro só tem efeito ao criar uma tabela externa particionada. |
| Não | O caminho do arquivo de metadados da tabela externa do Iceberg. Importante
|
Exemplos
Exemplo 1: Criar uma tabela externa não particionada
-
Defina o formato de armazenamento do arquivo como 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'; -
Defina o formato de armazenamento do arquivo como 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'); -
Defina o formato de armazenamento do arquivo como 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'; -
Defina o formato de armazenamento do arquivo como 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'); -
Defina o formato de armazenamento do arquivo como 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/';
Exemplo 2: Criar uma tabela externa particionada
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/';
Exemplo 3: Criar uma tabela externa particionada em vários níveis
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/';
Tabelas externas do RDS MySQL
Para criar tabelas externas do ApsaraDB RDS for MySQL, primeiro ative a interface de rede elástica (ENI) na página Cluster Information do console do AnalyticDB for MySQL. Ao ativar ou desativar a ENI, as conexões com o banco de dados podem ser interrompidas por aproximadamente 2 minutos. Durante esse período, não é possível executar operações de leitura ou gravação. Ative ou desative a ENI com cuidado.
A instância do RDS MySQL deve estar na mesma VPC do cluster do AnalyticDB for MySQL.
Sintaxe
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}"]
}';
Parâmetros
Parâmetro | Obrigatório | Descrição |
| Sim | O nome e o esquema da tabela. Para obter informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. |
| Sim | O mecanismo de armazenamento da tabela externa. Para ler e gravar dados no RDS MySQL, defina o valor como MYSQL. |
| Sim | As propriedades da tabela externa. |
| Sim | O endpoint interno, o número da porta e o nome do banco de dados da instância do RDS MySQL. Para obter informações sobre como obter o endpoint interno de uma instância do RDS, consulte Visualize ou altere os endpoints e portas internos e públicos. |
| Sim | O nome da tabela no RDS MySQL. |
| Sim | A conta do banco de dados do RDS MySQL. |
| Sim | A senha da conta do banco de dados do RDS MySQL. |
| Não | O conjunto de caracteres da tabela externa do MySQL. Valores válidos:
|
Exemplo
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"
}';
Tabelas externas do MongoDB
Antes de criar uma tabela externa do MongoDB, ative a interface de rede elástica (ENI) na página Cluster Information do console do AnalyticDB for MySQL. Ao ativar ou desativar a ENI, as conexões com o banco de dados podem ser interrompidas por aproximadamente 2 minutos. Durante esse período, não é possível executar operações de leitura ou gravação. Ative ou desative a ENI com cuidado.
A instância do MongoDB deve estar na mesma VPC do cluster do AnalyticDB for MySQL.
Sintaxe
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",
}';
Parâmetros
Parâmetro | Obrigatório | Descrição |
| Sim | O nome e o esquema da tabela. Para obter informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. |
| Sim | O mecanismo de armazenamento da tabela externa. Para ler e gravar dados no MongoDB, defina o valor como MONGODB. |
| Sim | As propriedades da tabela externa. |
mapped_name | Sim | O nome da coleção do MongoDB. |
location | Sim | |
username | Sim | The database account of the MongoDB instance. Nota
O MongoDB verifica a conta e a senha do banco de dados no banco de dados de destino. Use a conta do banco de dados especificada no endpoint de VPC da instância do MongoDB. Em caso de dúvidas, entre em contato com o suporte técnico. |
password | Sim | A senha da conta do banco de dados do MongoDB. |
Exemplo
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",
}';
Tabelas externas do Tablestore
Se uma instância do Tablestore estiver conectada a uma VPC, a instância deverá estar na mesma VPC do cluster do AnalyticDB for MySQL.
Sintaxe
CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OTS'
TABLE_PROPERTIES = '{
"mapped_name":"table_name",
"location":"tablestore_vpc_address"
}';
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
O nome e o esquema da tabela. Para obter informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. |
|
|
Sim |
O mecanismo de armazenamento da tabela externa. Para ler e gravar dados no Tablestore, defina o valor como OTS. |
|
|
Sim |
O nome da tabela na instância do Tablestore. Acesse o console do Tablestore e visualize o nome da tabela na página Instance Management. |
|
|
Sim |
O endpoint de VPC da instância do Tablestore. Acesse o console do Tablestore e visualize o endpoint de VPC da instância na página Instance Management. |
Exemplo
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"
}';
Tabelas externas do MaxCompute
O projeto do MaxCompute deve estar na mesma região do cluster do AnalyticDB for MySQL.
Para criar tabelas externas do MaxCompute em lotes, consulte IMPORT FOREIGN SCHEMA.
Sintaxe
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"
}';
Parâmetros
Parâmetro | Obrigatório | Descrição |
| Sim | O nome e o esquema da tabela. O esquema da tabela deve incluir colunas de chave de partição. table_name e column_name: o nome da tabela e o nome de uma coluna. Para obter informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. column_type: há suporte para os tipos de dados básicos e complexos (ARRAY, MAP e STRUCT) do MaxCompute. Nota O MaxCompute suporta tipos de dados complexos nas versões 3.2.1.0 e posteriores. Para obter mais informações sobre tipos de dados complexos, consulte Complex data types. Para visualize e atualize a versão secundária de um cluster do AnalyticDB for MySQL, acesse o console do AnalyticDB for MySQL e acesse a seção Configuration Information da página Cluster Information. |
| Sim | O mecanismo de armazenamento da tabela externa. Para ler e gravar dados no MaxCompute, defina o valor como ODPS. |
| Sim | O endpoint do MaxCompute. Nota Você pode acessar o MaxCompute apenas por um endpoint de VPC. Para obter informações sobre como visualizar os endpoints do MaxCompute, consulte Endpoints. |
| Sim | O AccessKey ID de uma conta da Alibaba Cloud ou de um usuário do Resource Access Management (RAM) com permissões para acessar o MaxCompute. Para obter informações sobre como obter um AccessKey ID e um AccessKey Secret, consulte Accounts and permissions. |
| Sim | O AccessKey Secret de uma conta da Alibaba Cloud ou de um usuário do RAM com permissões para acessar o MaxCompute. Para obter informações sobre como obter um AccessKey ID e um AccessKey Secret, consulte Accounts and permissions. |
| Não | A coluna de chave de partição. Este parâmetro é obrigatório se a tabela do MaxCompute for particionada. Importante Ao criar uma tabela externa particionada do MaxCompute, se uma coluna de partição não for a última coluna na lista de |
| Sim | O nome do projeto do MaxCompute. |
| Sim | O nome da tabela do MaxCompute. |
Exemplo
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"
}';
Referências
Para obter mais informações sobre tabelas externas do OSS, consulte Import data from OSS to a Data Lakehouse Edition cluster using an external table.
Para obter mais informações sobre tabelas externas do RDS MySQL, consulte Import data from RDS MySQL using an external table.
Para obter mais informações sobre tabelas externas do MongoDB, consulte Import data from MongoDB using an external table.
Para obter mais informações sobre tabelas externas do Tablestore, consulte Query and import data from Tablestore.
Para obter mais informações sobre tabelas externas do MaxCompute, consulte Import data from MaxCompute using an external table.