Os projetos externos do MaxCompute mapeiam catálogos do Data Lake Formation (DLF), permitindo que o MaxCompute leia e grave em tempo real tabelas no formato Paimon armazenadas no Object Storage Service (OSS) gerenciado pelo DLF. O gerenciamento de permissões é delegado ao DLF, e o mapeamento no nível de catálogo viabiliza a colaboração entre múltiplos mecanismos sobre metadados compartilhados do data lake.
Os projetos externos Paimon_DLF estão atualmente em fase de visualização por convite.
Limitações
Há suporte apenas para tabelas no formato Paimon armazenadas no OSS gerenciado pelo DLF.
Não há suporte para gravação em tabelas Dynamic Bucket.
Não há suporte para gravação em tabelas Cross Partition.
Funcionamento das permissões
O acesso aos dados do Paimon_DLF pelo MaxCompute exige o cumprimento de duas camadas de permissão independentes. Configure ambas, pois a ausência de qualquer uma delas resulta em erros de acesso.
|
Camada |
O que controla |
Onde é gerenciada |
|
Plano de controle |
Operações no console — criação de projeto externo e anexação de catálogo DLF |
Console RAM |
|
Plano de dados |
Operações SQL — leitura e gravação de tabelas Paimon, gerenciamento de schemas e tabelas no catálogo DLF anexado |
Console DLF |
Ao ler ou gravar dados, o MaxCompute transmite a identidade do executor da tarefa atual para o DLF. Cada sistema aplica seu próprio escopo de permissões de forma independente.
Configure a integração
|
Etapa |
Ação |
Objetivo |
|
1 |
Conceder permissões |
Autorizar o acesso a recursos cloud, ativar o DLF e criar uma função vinculada ao service |
|
2 |
Criar uma fonte de dados externa Paimon_DLF |
Definir a conexão entre o MaxCompute e o DLF |
|
3 |
Criar um projeto externo |
Mapear um catálogo DLF para um projeto MaxCompute |
|
4 |
Consultar e gravar dados com SQL |
Ler e gravar tabelas Paimon no OSS gerenciado pelo DLF |
Etapa 1: Conceder permissões
A tabela a seguir indica qual tipo de conta executa cada tarefa nesta etapa.
|
Tarefa |
Executada por |
|
Conceder políticas RAM a um usuário RAM |
Proprietário da conta Alibaba Cloud |
|
Autorizar acesso a recursos cloud no console DLF |
Proprietário da conta Alibaba Cloud |
|
Ativar o DLF |
Proprietário da conta Alibaba Cloud |
|
Criar a função vinculada ao service do MaxCompute |
Proprietário da conta Alibaba Cloud |
|
Conceder permissões de dados do DLF a usuários RAM |
Administrador do data lake (console DLF) |
Conceder políticas RAM a um usuário RAM
Caso utilize um usuário Resource Access Management (RAM), anexe as políticas abaixo. Para instruções, consulte Grant permissions to a RAM user.
|
Política |
Necessária para |
|
|
O proprietário da conta Alibaba Cloud deve concedê-la se o usuário RAM não a possuir |
|
|
Criação de fontes de dados externas e projetos externos |
|
|
Criação de projetos externos — concede a permissão |
Autorizar acesso a recursos cloud e ativar o DLF
Faça login no console DLF e selecione sua região no canto superior esquerdo.
À direita de Permissions to access cloud resources are granted., clique em Authorize.
-
Clique em Activate à direita de DLF is activated.
O MaxCompute e o DLF devem estar na mesma região.
Criar uma função vinculada ao service para o MaxCompute
O MaxCompute utiliza a função vinculada ao service AliyunServiceRoleForMaxComputeLakehouse para acessar dados do DLF. Crie essa função no console RAM:
Faça login no console RAM.
No painel de navegação à esquerda, escolha Identities > Roles.
Na página Roles, clique em Create Role.
No canto superior direito, clique em Create Service Linked Role.
Defina Select Service como
AliyunServiceRoleForMaxComputeLakehousee clique em Create Service Linked Role. Se uma mensagem indicar que a função já existe, ela já está autorizada. Nenhuma ação adicional é necessária.
Conceder permissões de dados do DLF a usuários RAM
As permissões do plano de dados são gerenciadas no console DLF. Faça login no console DLF e grant permissions to RAM users que precisarem ler ou gravar tabelas Paimon.
Etapa 2: Criar uma source de dados externa Paimon_DLF
Faça login no console MaxCompute e selecione sua região.
No painel de navegação à esquerda, escolha Manage Configurations > External Data Source.
Clique em Create External Data Source.
-
Configure os seguintes parâmetros:
Parâmetro
Obrigatório
Descrição
External Data Source Type
Obrigatório
Selecione Paimon_DLF
External Data Source Name
Obrigatório
Deve começar com uma letra; apenas letras minúsculas, sublinhados e dígitos; máximo de 128 caracteres. Exemplo:
paimon_dlfDescription
Opcional
Descrição personalizada
Region
Obrigatório
Padrão definido como a região atual
Authentication And Authorization
Obrigatório
Padrão definido como Alibaba Cloud RAM role
Service-linked Role
Obrigatório
Gerado automaticamente
Endpoint
Obrigatório
Gerado automaticamente. Para a região China (Hangzhou):
cn-hangzhou-intranet.dlf.aliyuncs.comForeign Server Supplemental Properties
Opcional
Atributos adicionais para a source de dados externa
Clique em OK.
Na página External Data Source, localize a nova source de dados e clique em Details na coluna Actions para verificar a configuração.
Etapa 3: Criar um projeto externo
Faça login no console MaxCompute e selecione sua região.
No painel de navegação à esquerda, escolha Manage Configurations > Projects.
Na aba External Project, clique em Create Project.
-
Configure os parâmetros a seguir e clique em OK:
Parâmetro
Obrigatório
Descrição
Project Type
Obrigatório
Padrão definido como External Project
Region
Obrigatório
Padrão definido como a região atual; não pode ser alterado
Project Name (Globally Unique)
Obrigatório
Deve começar com uma letra; apenas letras, dígitos e sublinhados; 3–28 caracteres
MaxCompute Foreign Server Type
Opcional
Padrão definido como Paimon_DLF
MaxCompute Foreign Server
Opcional
Use Existing para selecionar uma source de dados externa criada anteriormente, ou Create Foreign Server para criar uma nova
MaxCompute Foreign Server Name
Obrigatório
Selecione entre as sources de dados existentes ou insira o nome da nova
Data Catalog
Obrigatório
O catálogo de dados DLF a ser anexado
Billing Method
Obrigatório
Subscription ou Pay-as-you-go
Default Quota
Obrigatório
Selecione uma cota existente
Description
Opcional
Descrição personalizada
Etapa 4: Consultar e gravar dados com SQL
Select a connection tool para fazer login no projeto externo e utilize os comandos SQL a seguir.
Listar schemas
-- Enable schema syntax at the session level.
SET odps.namespace.schema=true;
SHOW schemas;
-- Sample output:
-- ID = 20250919****am4qb
-- default
-- system
-- OK
Listar tabelas em um schema
-- Replace <schema_name> with the schema name shown in the output above.
USE schema <schema_name>;
SHOW tables;
-- Sample output:
-- ID = 20250919****am4qb
-- acs:ram::<uid>:root emp
-- OK
Criar um schema
-- Replace <schema_name> with your schema name.
CREATE schema <schema_name>;
Criar uma tabela e inserir dados
Ao gravar dados TIMESTAMP em uma tabela de source Paimon, os dados são truncados conforme sua precisão: precisão 0–3 trunca para 3 casas decimais, precisão 4–6 trunca para 6 casas decimais e precisão 7–9 trunca para 9 casas decimais.
Formato do comando:
-- Create a table.
CREATE TABLE [IF NOT EXISTS] <table_name>
(
<col_name> <data_type>,
...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
;
-- Insert data.
INSERT {INTO|OVERWRITE} TABLE <table_name> [PARTITION (<pt_spec>)] [(<col_name> [,<col_name> ...])]
<select_statement>
FROM <from_statement>
Exemplo — criar uma tabela e inserir linhas:
CREATE TABLE schema_table(id int, name string);
INSERT INTO schema_table VALUES (101, 'Zhang San'), (102, 'Li Si');
-- Verify the data.
SELECT * FROM schema_table;
-- Result:
-- +------------+------------+
-- | id | name |
-- +------------+------------+
-- | 101 | Zhang San |
-- | 102 | Li Si |
-- +------------+------------+
Se você estiver conectado como um usuário RAM, a criação de tabelas e a inserção de dados exigem permissões no catálogo DLF. Consulte Data authorization management .
Ler e gravar no schema padrão
USE schema default;
SHOW tables;
-- Sample output:
-- ID = 20250919*******yg5
-- acs:ram::<uid>:root emp
-- acs:ram::<uid>:root emp_detail
-- acs:ram::<uid>:root test_table
-- OK
-- Read data.
SELECT * FROM test_table;
-- Result:
-- +------------+------------+
-- | id | name |
-- +------------+------------+
-- | 101 | Zhang San |
-- | 102 | Li Si |
-- +------------+------------+
-- Write data and verify.
INSERT INTO test_table VALUES (103, 'Wang Wu');
SELECT * FROM test_table;
-- Result:
-- +------------+------------+
-- | id | name |
-- +------------+------------+
-- | 101 | Zhang San |
-- | 102 | Li Si |
-- | 103 | Wang Wu |
-- +------------+------------+
Solução de problemas
"You are not authorized to perform this action" ao criar um projeto externo
O usuário RAM não possui as permissões necessárias. Verifique o seguinte:
O código de erro nos detalhes do erro é NoMCPermission.
"Forbidden: User acs:ram::\<uid\>:user/\\ doesn't have privilege LIST on DATABASE default" ao executar SHOW TABLES
O usuário RAM não tem permissões do plano de dados no catálogo DLF.
Faça login no console DLF. No painel de navegação à esquerda, clique em System And Security. Na aba Access Control, atualize a página e verifique se o usuário RAM aparece.
Se o usuário existir, clique em Roles e conceda as permissões necessárias ao usuário RAM.