AnalyticDB for MySQL permite a criação de diversos tipos de tabelas externas, incluindo tabelas externas 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.
É necessário criar um banco de dados externo. Para mais informações, consulte CREATE EXTERNAL DATABASE.
Observações de uso
A criação entre contas é suportada apenas para tabelas externas do OSS.
Tabelas externas do OSS
O bucket do OSS deve estar na mesma região do cluster AnalyticDB for MySQL.
-
Ao criar tabelas externas Hudi, Iceberg ou Paimon, a versão do kernel do cluster deve atender aos seguintes requisitos:
Tabelas externas Hudi: a versão do kernel do cluster deve ser 3.1.9.2 ou posterior.
Tabelas externas Iceberg: a versão do kernel do cluster deve ser 3.2.3.0 ou posterior.
Tabelas externas 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 da tabela externa. Caso contrário, não será possível consultar dados na tabela.Para criar uma tabela externa do OSS entre contas da Alibaba Cloud, adicione os parâmetros necessários durante a criação do banco de dados externo. Para 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 | Nome e esquema da tabela. Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. Importante Ao criar uma tabela externa 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 | Configure este parâmetro para especificar as colunas de chave de partição ao criar uma tabela externa particionada. Se você especificar várias colunas de chave de partição, uma tabela com múltiplos níveis de partição será criada. |
| Sim | Delimitador de coluna. É possível especificar qualquer símbolo, desde que corresponda ao separador utilizado no arquivo. Este tópico utiliza a vírgula (,) como exemplo. Importante Este parâmetro é suportado apenas quando |
| Sim | 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 | Caminho do arquivo ou pasta no OSS. Ao especificar o caminho de uma pasta do OSS, siga estas regras. Caso contrário, as consultas podem falhar ou retornar 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 no OSS for Importante
|
| Não | Tipo da tabela externa Hudi. Valores válidos:
Importante Este parâmetro é obrigatório apenas quando |
| Não | Define se o caminho do arquivo ou pasta no OSS deve ser criado automaticamente. Valores válidos:
Importante Este parâmetro tem efeito apenas durante a criação de uma tabela externa particionada. |
| Não | Caminho do arquivo de metadados da tabela externa Iceberg. Importante
|
Exemplos
Exemplo 1: Criar uma tabela externa não particionada
-
Defina o formato de armazenamento de 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 de 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 de 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 de 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 de 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 com múltiplos níveis de partição
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, ative primeiro 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, operações de leitura e escrita ficam indisponíveis. Ative ou desative a ENI com cautela.
A instância do RDS MySQL deve estar na mesma Virtual Private Cloud (VPC) do cluster 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 | Nome e esquema da tabela. Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. |
| Sim | Engine de armazenamento da tabela externa. Para ler e gravar dados no RDS MySQL, defina o valor como MYSQL. |
| Sim | Propriedades da tabela externa. |
| Sim | Endpoint interno, número da porta e nome do banco de dados da instância RDS MySQL. Para obter informações sobre como adquirir o endpoint interno de uma instância RDS, consulte View or change the internal and public endpoints and ports. |
| Sim | Nome da tabela no RDS MySQL. |
| Sim | Conta do banco de dados RDS MySQL. |
| Sim | Senha da conta do banco de dados RDS MySQL. |
| Não | Conjunto de caracteres da tabela externa 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, operações de leitura e escrita ficam indisponíveis. Ative ou desative a ENI com cautela.
A instância do MongoDB deve estar na mesma VPC do cluster 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 | Nome e esquema da tabela. Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. |
| Sim | Engine de armazenamento da tabela externa. Para ler e gravar dados no MongoDB, defina o valor como MONGODB. |
| Sim | Propriedades da tabela externa. |
mapped_name | Sim | Nome da coleção do MongoDB. |
location | Sim | vpc endpoint da instância do ApsaraDB for MongoDB. |
username | Sim | database account do ApsaraDB for MongoDB. Nota
O ApsaraDB for MongoDB valida a conta e a senha no banco de dados de destino. Utilize a conta do banco de dados especificado no endpoint VPC. Em caso de problemas, entre em contato com o suporte técnico. |
password | Sim | Senha da conta do banco de dados ApsaraDB for 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 anexada a uma VPC, ela deverá estar na mesma VPC do cluster 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 |
Nome e esquema da tabela. Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. |
|
|
Sim |
Engine de armazenamento da tabela externa. Para ler e gravar dados no Tablestore, defina o valor como OTS. |
|
|
Sim |
Nome da tabela na instância do Tablestore. Faça login no console do Tablestore e visualize o nome da tabela na página Instance Management. |
|
|
Sim |
Endpoint VPC da instância do Tablestore. Faça login no console do Tablestore e visualize o endpoint 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 AnalyticDB for MySQL.
Para criar tabelas externas do MaxCompute em lote, 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 | Nome e esquema da tabela. O esquema da tabela deve incluir as colunas de chave de partição. table_name e column_name: nome da tabela e nome da coluna. Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions. column_type: tipos de dados básicos e complexos do MaxCompute (ARRAY, MAP e STRUCT) são suportados. Nota Os tipos de dados complexos do MaxCompute são suportados nas versões 3.2.1.0 e posteriores. Para mais informações sobre tipos de dados complexos, consulte Complex data types. Para visualize e atualize a versão secundária de um cluster AnalyticDB for MySQL, faça login no console do AnalyticDB for MySQL e acesse a seção Configuration Information da página Cluster Information. |
| Sim | Engine de armazenamento da tabela externa. Para ler e gravar dados no MaxCompute, defina o valor como ODPS. |
| Sim | Endpoint do MaxCompute. Nota O acesso ao MaxCompute é permitido apenas via Endpoint VPC. Para informações sobre como visualizar os Endpoints do MaxCompute, consulte Endpoints. |
| Sim | AccessKey ID de uma conta Alibaba Cloud ou de um usuário do Resource Access Management (RAM) com permissões para acessar o MaxCompute. Para informações sobre como obter um AccessKey ID e um AccessKey secret, consulte Accounts and permissions. |
| Sim | AccessKey secret de uma conta Alibaba Cloud ou de um usuário RAM com permissões para acessar o MaxCompute. Para informações sobre como obter um AccessKey ID e um AccessKey secret, consulte Accounts and permissions. |
| Não | 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 na lista de |
| Sim | Nome do projeto do MaxCompute. |
| Sim | 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 mais informações sobre tabelas externas do OSS, consulte Import data from OSS to a Data Lakehouse Edition cluster using an external table.
Para mais informações sobre tabelas externas do RDS MySQL, consulte Import data from RDS MySQL using an external table.
Para mais informações sobre tabelas externas do MongoDB, consulte Import data from MongoDB using an external table.
Para mais informações sobre tabelas externas do Tablestore, consulte Query and import data from Tablestore.
Para mais informações sobre tabelas externas do MaxCompute, consulte Import data from MaxCompute using an external table.