Use o Flink para criar um Catálogo Paimon DLF, ler dados de negócios do MySQL CDC e gravar os dados no DLF. Em seguida, use um projeto externo do MaxCompute para consultar e analisar dados federados no data lake e gravar os resultados de volta no DLF. Este fluxo de trabalho requer a nova versão do DLF, e não o DLF 1.0. Para mais detalhes, consulte Data Lake Formation.
Pré-requisitos
O serviço OSS está ativado.
O serviço DLF está ativado.
O serviço Flink está ativado.
Você criou um projeto do MaxCompute e ativou a chave de schema para metadados no nível do projeto.
Você criou uma instância do RDS for MySQL.
Este tutorial usa o Flink e uma instância do RDS for MySQL como exemplos, mas eles não são obrigatórios se você já tiver dados do Paimon no DLF.
Procedimento
Se você já tiver dados de teste no DLF, pule para a Etapa 5.
Etapa 1: Preparar os dados de origem
Simule atualizações de dados de negócios em tempo real. O Flink grava os dados no data lake no formato Paimon.
Faça login no console do RDS.
Na barra de navegação à esquerda, selecione Instances e, no canto superior esquerdo, selecione a região.
Na página Instances, clique no Instance ID/Name da instância desejada para abrir a página Instance Details.
Na barra de navegação à esquerda, clique em Databases.
-
Clique em Create Database. Configure os seguintes parâmetros:
Parâmetro
Obrigatório
Descrição
Exemplo
Database Name
Sim
-
O nome deve ter entre 2 e 64 caracteres.
-
Deve começar com uma letra e terminar com uma letra ou dígito.
-
Pode conter letras minúsculas, dígitos, sublinhados (_) e hifens (-).
-
O nome do banco de dados deve ser único na instância.
-
Se o nome do banco de dados contiver um hífen (
-), o hífen (-) no nome da pasta do banco de dados criado será substituído por@002d.
dlf25_paimonSupported Character Set
Sim
Selecione um conjunto de caracteres conforme necessário.
utf8Authorized By
Não
-
Selecione as contas que precisam acessar este banco de dados. Você pode deixar este parâmetro vazio e vincular contas após criar o banco de dados.
-
Apenas contas padrão aparecem aqui. Contas privilegiadas têm todas as permissões em todos os bancos de dados e não exigem autorização.
DefaultDescription
Não
Observações sobre o banco de dados para gerenciamento futuro. Comprimento máximo: 256 caracteres.
Create a test database for the external project DLF 2.5. -
-
Clique em Log On to Database. Na barra de navegação à esquerda, selecione Instance e clique duas vezes no banco de dados criado. Na página SQL Console à direita, execute as instruções a seguir para criar uma tabela de teste e inserir dados de teste.
Se a instância existir, mas o banco de dados alvo não aparecer após expandir a instância, as possíveis causas incluem:
A conta de login não tem permissões de acesso ao banco de dados alvo: Acesse a página Accounts na página de detalhes da instância RDS para modificar manualmente as permissões da conta ou alterar a conta de login do banco de dados.
O diretório não aparece porque os metadados não estão sincronizados: Passe o mouse sobre a instância e clique no ícone
à direita do nome da instância para atualizar a lista e exibir o banco de dados.
CREATE TABLE emp ( empno INT PRIMARY KEY, ename VARCHAR(20), job VARCHAR(20), mgr INT, hiredate DATE, sal DECIMAL(10,2), comm DECIMAL(10,2), deptno INT ); INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,'2020-12-17', 800.00,NULL,20), (7499,'ALLEN','SALESMAN',7698,'2021-02-20',1600.00,300.00,30), (7521,'WARD','SALESMAN',7698,'2021-02-22',1250.00,500.00,30), (7566,'JONES','MANAGER',7839,'2021-04-02',2975.00,NULL,20), (7654,'MARTIN','SALESMAN',7698,'2021-09-28',1250.00,1400.00,30), (7698,'BLAKE','MANAGER',7839,'2021-05-01',2850.00,NULL,30), (7782,'CLARK','MANAGER',7839,'2021-06-09',2450.00,NULL,10), (7788,'SCOTT','ANALYST',7566,'2021-12-09',3000.00,NULL,20), (7839,'KING','PRESIDENT',NULL,'2021-11-17',5000.00,NULL,10), (7844,'TURNER','SALESMAN',7698,'2021-09-08',1500.00,0.00,30), (7876,'ADAMS','CLERK',7788,'2022-01-12',1100.00,NULL,20), (7900,'JAMES','CLERK',7698,'2021-12-03', 950.00,NULL,30), (7902,'FORD','ANALYST',7566,'2021-12-03',3000.00,NULL,20), (7934,'MILLER','CLERK',7782,'2022-01-23',1300.00,NULL,10), (8001,'DUKE','ENGINEER',7788,'2023-03-15',3500.00,NULL,20), (8002,'DANIEL','ENGINEER',7788,'2023-04-01',3400.00,NULL,20), (8003,'SANDRA','CONSULTANT',7698,'2023-05-10',2700.00,NULL,30), (8004,'KAREN','CLERK',7902,'2023-06-11',1200.00,NULL,20), (8005,'JOHN','MANAGER',7839,'2023-07-12',4000.00,NULL,10), (8006,'LISA','DESIGNER',7698,'2023-08-13',2200.00,NULL,30); -
Consulte os dados na tabela de teste.
SELECT * FROM emp;O resultado retornado é:
A consulta retorna 20 registros com oito campos:
empno(ID do funcionário),ename(nome),job(cargo),mgr(ID do gerente),hiredate(data de contratação),sal(salário),comm(comissão) edeptno(ID do departamento). Os IDs dos departamentos são 10, 20 e 30. O valor decommpara alguns funcionários é NULL.
Etapa 2: Preparar um metabanco de dados do DLF
Faça login no console do Data Lake Formation (DLF) e, no canto superior esquerdo, selecione uma região.
No painel de navegação à esquerda, escolha Catalog List.
Na página Catalogs, clique em Create Catalog.
-
Acesse a página Data Lake Formation (DLF), configure os seguintes parâmetros e clique em Create Catalog:
Parâmetro
Obrigatório
Descrição
Catalog Name
Sim
Nome personalizado do catálogo. O nome deve começar com uma letra e ter entre 1 e 256 caracteres. Pode conter letras, dígitos e sublinhados (_). Por exemplo,
db_dlf25_oss.Description
Não
Descrição personalizada.
Storage Type
Sim
Padrão.
Storage Redundancy Type
Sim
-
Armazenamento localmente redundante: os dados ficam armazenados em uma única zona. Se essa zona ficar indisponível, os dados tornar-se-ão inacessíveis. Recomendamos o uso de armazenamento redundante por zona.
-
Armazenamento redundante por zona: oferece redundância de dados em várias zonas de disponibilidade (AZs) na mesma região. Isso garante a disponibilidade dos dados mesmo se uma única AZ falhar. Após criar um catálogo, não é possível alterar seu tipo de armazenamento de redundante por zona para localmente redundante. Em comparação ao armazenamento localmente redundante, o armazenamento redundante por zona oferece maior disponibilidade a um custo mais elevado. Use o armazenamento redundante por zona para dados que exigem alta confiabilidade.
-
Etapa 3: Criar catálogos Paimon e MySQL usando o Flink
-
Criar um catálogo Paimon
Faça login no console do Realtime Compute for Apache Flink e selecione uma região no canto superior esquerdo.
Clique no nome do workspace desejado e, no painel de navegação à esquerda, selecione Data Management.
-
Na página catalog list , clique em Create Catalog . Na caixa de diálogo Create Catalog , selecione Apache Paimon, clique em Next e configure os seguintes parâmetros:
Parâmetro
Obrigatório
Descrição
metastore
Sim
Tipo de metastore. Selecione
dlfpara este exemplo.catalog name
Sim
Versão do Catálogo DLF a associar. Selecione DLF V2.5. Neste exemplo, selecione
db_dlf25_osscriado no DLF.
-
Criar um catálogo MySQL
Faça login no console do Realtime Compute for Apache Flink e selecione uma região no canto superior esquerdo.
-
Adicione um endereço IP à lista de permissões.
-
Na coluna Actions do workspace desejado, clique em Details.
Na caixa de diálogo pop-up Workspace Details, copie o CIDR Block do vSwitch.
-
Faça login no console do RDS.
Na barra de navegação à esquerda, selecione Instances e, no canto superior esquerdo, selecione a região.
Na página Instances, clique no Instance ID/Name da instância desejada para abrir a página Instance Details.
-
Na barra de navegação à esquerda, clique em Whitelist and SecGroup.
Na aba Whitelist Settings, clique em Modify.
Na caixa de diálogo Edit Whitelist, adicione os endereços IP copiados ao campo IP Addresses e clique em OK.
-
-
Faça login no console do Realtime Compute for Apache Flink e selecione uma região no canto superior esquerdo.
Clique no nome do workspace desejado e, no painel de navegação à esquerda, selecione Data Management.
-
Na página catalog list , clique em Create Catalog . Na caixa de diálogo Create Catalog , selecione MySQL, clique em Next e configure os seguintes parâmetros:
Parâmetro
Obrigatório
Descrição
catalog name
Sim
Nome personalizado para o catálogo MySQL. Por exemplo,
mysql-catalog-dlf25.hostname
Sim
-
Endereço IP ou nome do host do banco de dados MySQL.
-
Faça login no console do RDS. Na página de detalhes da instância, clique em Database Connection para visualizar o Internal Endpoint, o Public Endpoint e a Internal Port:.
-
Para acessar entre VPCs ou pela Internet, estabeleça conectividade de rede. Para mais informações, consulte Conectividade de Rede.
port
Padrão
Porta para conexão com o servidor. Padrão: 3306.
default database
Sim
Nome do banco de dados padrão. Por exemplo,
dlf25_paimon.username
Sim
Nome de usuário para conectar ao servidor de banco de dados MySQL. Para encontrar o nome de usuário, faça login no console do RDS, acesse a página de detalhes da instância e clique em Accounts.
password
Sim
Senha para conectar ao servidor de banco de dados MySQL. Para encontrar a senha, faça login no console do RDS, acesse a página de detalhes da instância e clique em Accounts.
-
Etapa 4: Ler dados do MySQL e gravá-los em uma tabela Paimon no DLF usando o Flink
Faça login no console do Realtime Compute for Apache Flink e selecione uma região no canto superior esquerdo.
Clique no nome do workspace desejado e, no painel de navegação à esquerda, selecione .
Na aba Drafts, clique em
para criar uma nova pasta.Clique com o botão direito em uma pasta e selecione New Blank Stream Draft. Na caixa de diálogo New Draft, insira um Name e selecione uma Engine Version.
-
Escreva e execute a seguinte instrução SQL. Modifique os nomes com base no seu ambiente real.
CREATE TABLE IF NOT EXISTS `db_dlf25_oss`.`default`.`emp` WITH ( 'bucket' = '4', 'changelog-producer' = 'input' ) AS TABLE `mysql-catalog-dlf25`.`dlf25_paimon`.`emp`;(Opcional) Clique em Validate no canto superior direito para verificar erros de sintaxe na instrução Flink SQL do job.
Clique em Deploy no canto superior direito e, na caixa de diálogo Deploy New Version, insira um Comment, uma Job Label e um Deployment Target. Em seguida, clique em Confirm.
Clique no nome do workspace desejado. No painel de navegação à esquerda, escolha .
Na página Deployments, clique no job desejado para abrir a página deployment details.
No canto superior direito da página, clique em Start, selecione stateless start e clique em Start.
-
Consultar os dados do Paimon
No painel de navegação à esquerda, selecione .
Na aba Query Script, clique em
para criar um novo script de consulta.SELECT * FROM `db_dlf25_oss`.`default`.`emp`;A consulta retorna 22 registros com oito campos (
empno,ename,job,mgr,hiredate,sal,commedeptno), confirmando que o Flink gravou com sucesso os dados do MySQL na tabela Paimon no DLF. Faça login no console do Data Lake Formation (DLF). No painel de navegação, escolha . Clique no catálogo de dados para acessar o banco de dados e visualizar os detalhes da tabela sincronizada.
A tabela emp sincronizada aparece na lista de tabelas. Seu proprietário é root (conta root), o tipo de tabela é Managed, o formato da tabela é Paimon PK Table e o formato de arquivo é parquet.
Etapa 5: Criar uma fonte de dados externa Paimon_DLF no MaxCompute
Faça login no console do MaxCompute e selecione uma região no canto superior esquerdo.
No painel de navegação à esquerda, escolha .
Na página External Data Source, clique em Create External Data Source.
-
Na caixa de diálogo Create External Data Source, configure os parâmetros. As tabelas a seguir descrevem os parâmetros.
Parâmetro
Obrigatório
Descrição
External Data Source Type
Sim
Selecione Paimon_DLF.
External Data Source Name
Sim
Nome da fonte de dados externa. O nome deve atender aos seguintes requisitos:
Deve começar com uma letra e conter apenas letras minúsculas, sublinhados (_) e dígitos.
Pode ter até 128 caracteres.
Exemplo:
paimon_dlf.Description
Não
Opcional. Descrição da fonte de dados externa.
Region
Sim
O padrão é a região atual.
Authentication and Authorization
Sim
O valor padrão é a função RAM do Alibaba Cloud.
Service-linked Role
Sim
Gerado automaticamente.
Endpoint
Sim
Gerado automaticamente. Por exemplo, o endpoint para a região China (Hangzhou) é
cn-hangzhou-intranet.dlf.aliyuncs.com.Foreign Server Supplemental Properties
Não
Opcional. Especifica atributos adicionais para a fonte de dados. Esses atributos definem como as tarefas que usam esta fonte de dados acessam o sistema de origem.
NotaConsulte a documentação oficial para obter uma lista completa dos parâmetros suportados. Mais parâmetros podem ser adicionados em atualizações futuras.
Clique em OK para criar a fonte de dados externa.
Na página External Data Source, localize a fonte de dados e clique em Details na coluna Actions para visualizar seus detalhes.
Etapa 6: Criar um projeto externo Paimon_DLF no MaxCompute
Faça login no console do MaxCompute e selecione uma região no canto superior esquerdo.
No painel de navegação à esquerda, escolha .
Na aba External Project, clique em Create Project.
-
Na caixa de diálogo Create Project, configure as definições e clique em OK.
Parâmetro
Obrigatório
Descrição
Project Type
Sim
O valor padrão é External Project.
Region
Sim
O valor padrão é a região atual. Não é possível alterá-lo aqui.
Project Name (Globally Unique)
Sim
O nome deve começar com uma letra, conter letras, dígitos e sublinhados (_), e ter entre 3 e 28 caracteres.
MaxCompute Foreign Server Type
Não
O valor padrão é Paimon_DLF.
MaxCompute Foreign Server
Não
-
Use Existing: uma lista de fontes de dados externas criadas é exibida.
-
Create Foreign Server: cria e usa uma nova fonte de dados externa.
MaxCompute Foreign Server Name
Sim
-
Usar existente: selecione o nome de uma fonte de dados externa criada na lista suspensa.
-
Nova fonte de dados externa: use o nome da nova fonte de dados externa.
Authentication and Authorization
Sim
Identidade do executor da tarefa. Se não existir uma função vinculada ao serviço, crie uma antes de usar este modo.
Service-linked Role
Sim
Gerado por padrão.
Endpoint
Sim
Gerado por padrão.
Data Catalog
Sim
Catálogo de dados do DLF.
Billing Method
Sim
Subscription ou Pay-as-you-go.
Default Quota
Sim
Selecione uma cota existente.
Description
Não
Descrição personalizada do projeto.
-
Etapa 7: Analisar dados
Use uma ferramenta de conexão para fazer login no projeto externo.
-
Liste os schemas no projeto externo.
-- Enable schema syntax at the session level. SET odps.namespace.schema=true; SHOW schemas; -- The following result is returned. ID = 20250919****am4qb default system OK -
Liste as tabelas no schema do projeto externo.
-- Enable schema syntax at the session level. SET odps.namespace.schema=true; USE schema default; SHOW tables; -- The following result is returned. ID = 20250919****am4qb acs:ram::<uid>:root emp OK -
Leia dados da tabela Paimon no DLF.
-- Enable schema syntax at the session level. SET odps.namespace.schema=true; USE schema default; SELECT * FROM emp; -
Consulte a tabela emp para recuperar informações completas sobre os funcionários com maior e menor salário em cada departamento.
-- Enable schema syntax at the session level. SET odps.namespace.schema=true; USE schema default; WITH ranked AS ( SELECT e.*, ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal DESC) AS rn_desc, ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal ASC) AS rn_asc FROM emp e ) SELECT * FROM ranked WHERE rn_desc = 1 OR rn_asc = 1 ORDER BY deptno, sal DESC;
Etapa 8: Gravar os resultados da análise de volta no DLF
-
No projeto externo da etapa anterior, crie uma tabela para armazenar os resultados da análise.
-- Enable schema syntax at the session level. SET odps.namespace.schema=true; use schema default; CREATE TABLE emp_detail ( empno INT, ename VARCHAR(20), job VARCHAR(20), mgr INT, hiredate DATE, sal DECIMAL(10,2), comm DECIMAL(10,2), deptno INT ); -
Grave os resultados da análise na nova tabela.
-- Enable schema syntax at the session level. SET odps.namespace.schema=true; use schema default; WITH ranked AS ( SELECT e.*, ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal DESC) AS rn_desc, ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal ASC) AS rn_asc FROM emp e ) insert into emp_detail SELECT empno,ename,job,mgr, hiredate,sal,comm,deptno FROM ranked WHERE rn_desc = 1 OR rn_asc = 1 ORDER BY deptno, sal DESC; -
Consulte a nova tabela.
-- Enable schema syntax at the session level. SET odps.namespace.schema=true; use schema default; SELECT * FROM emp_detail; Faça login no console do Data Lake Formation (DLF). No painel de navegação à esquerda, escolha Catalog List. A tabela
emp_detailrecém-criada aparece na lista.