O MaxCompute permite criar uma tabela externa do Apache Paimon e mapeá-la para o diretório de uma tabela armazenada no Object Storage Service (OSS). Isso permite usar a tabela externa do Apache Paimon no MaxCompute para acessar os dados da tabela do Apache Paimon armazenada no OSS. Este tópico descreve como criar uma tabela externa do Apache Paimon usando o Realtime Compute for Apache Flink e como consultar dados por meio dessa tabela externa no MaxCompute.
Informações de contexto
O Apache Paimon é um formato unificado de armazenamento em data lake para streaming e batch que oferece gravações com alto throughput e consultas de baixa latência. Os mecanismos de computação comuns, como Spark, Hive e Trino em Realtime Compute for Apache Flink e E-MapReduce, integram-se perfeitamente ao Paimon. Com o Apache Paimon, você pode criar rapidamente um data lake no Object Storage Service (OSS) e conectá-lo ao MaxCompute para análises de data lake. Para obter mais informações sobre o Apache Paimon, consulte a documentação do Apache Paimon.
Pré-requisitos
A conta da Alibaba Cloud usada para executar as operações deve ter a permissão CreateTable para criar tabelas do MaxCompute. Para obter mais informações sobre as permissões de tabela, consulte MaxCompute permissions.
Você criou um projeto do MaxCompute. Para obter mais informações, consulte Create a project.
-
Você ativou o OSS e criou um bucket e um diretório de arquivos. Para obter mais informações, consulte Create a bucket.
NotaO MaxCompute é implantado apenas em regiões específicas. Para evitar problemas de conectividade de dados entre regiões, recomendamos que você use um bucket na mesma região do seu projeto do MaxCompute.
Você ativou o Flink totalmente gerenciado. Para obter mais informações, consulte Create a workspace.
Precauções
O MaxCompute só pode ler dados de tabelas externas do Apache Paimon. Ele não pode gravar dados nessas tabelas nem sincronizar automaticamente as alterações de schema.
O Apache Paimon não é compatível com projetos do MaxCompute em que o schema feature esteja ativado.
As tabelas externas do Apache Paimon não são compatíveis com o atributo de clustering.
As tabelas externas do Apache Paimon não são compatíveis com recursos como consulta e rastreamento de dados de versões históricas.
Etapa 1: Carregue o plug-in do Apache Paimon no seu projeto do MaxCompute
Use um dos métodos a seguir para carregar o Paimon plugin no seu projeto do MaxCompute.
Use o cliente do MaxCompute (odpscmd)
Acesse o seu projeto do MaxCompute com o MaxCompute client (odpscmd) e execute o comando a seguir para carregar o arquivo paimon_maxcompute_connector.jar no projeto.
ADD JAR <path_to_paimon_maxcompute_connector.jar>;
Use o console do DataWorks
Faça login no DataWorks console. No painel de navegação à esquerda, clique em Workspace. Na coluna Actions do workspace de destino, escolha Quick Access > DataStudio.
Na página Data Development, clique em Create e selecione New Resource > JAR.
-
Na caixa de diálogo New resource, configure os parâmetros para carregar o arquivo
paimon_maxcompute_connector.jare clique em Create. Para obter mais informações sobre a criação de recursos, consulte Step 1: Create or upload a resource.A seguir, defina os seguintes parâmetros: para Engine Type, selecione MaxCompute; para Engine Instance, selecione glz_mc China (Beijing); para Schema, selecione default; para Resource Type, selecione JAR; e selecione Upload as ODPS Resource.
Após criar o recurso, clique no ícone
na barra de ferramentas da guia de configuração do recurso para fazer o commit no ambiente de desenvolvimento.
Etapa 2: Crie uma tabela externa do Apache Paimon usando o Realtime Compute for Apache Flink
A melhor prática descrita neste tópico utiliza o Realtime Compute for Apache Flink. O Realtime Compute for Apache Flink grava dados de arquivos do Apache Paimon no OSS. Você cria um catálogo do Apache Paimon no console do Realtime Compute for Apache Flink e cria uma tabela do Apache Paimon nesse catálogo. O MaxCompute pode usar essa tabela para ler os dados dos arquivos do Apache Paimon no OSS. Em seguida, o MaxCompute usa a tabela do Apache Paimon como tabela externa para ler os dados armazenados no OSS.
Faça login no Realtime Compute for Apache Flink console e crie um Script. Para obter mais informações, consulte Query Scripts.
-
No editor de scripts, insira a seguinte definição de catálogo e os valores dos parâmetros. Agora, selecione o código e clique em Run.
CREATE CATALOG `<catalog name>` WITH ( 'type' = 'paimon', 'metastore' = 'maxcompute', 'warehouse' = '<warehouse>', 'maxcompute.endpoint' = '<maxcompute.endpoint>', 'maxcompute.project' = '<maxcompute.project>', 'maxcompute.accessid' = '<maxcompute.accessid>', 'maxcompute.accesskey' = '<maxcompute.accesskey>', 'maxcompute.oss.endpoint' = '<maxcompute.oss.endpoint>', 'fs.oss.endpoint' = '<fs.oss.endpoint>', 'fs.oss.accessKeyId' = '<fs.oss.accessKeyId>', 'fs.oss.accessKeySecret' = '<fs.oss.accessKeySecret>' );A tabela a seguir descreve os parâmetros no código.
Parâmetro
Obrigatório
Descrição
catalog name
Sim
O nome do catálogo do Apache Paimon. O nome pode conter apenas letras. Neste tópico, o nome do catálogo é catalogname.
type
Sim
O tipo do catálogo. Para isso, defina o valor como paimon.
metastore
Sim
O tipo de armazenamento de metadados. Para isso, defina o valor como maxcompute.
warehouse
Sim
O diretório do data warehouse no OSS, no formato
oss://<bucket>/<object>.bucket: o nome do bucket do OSS criado.
object: o caminho onde os dados são armazenados.
Visualize os nomes do bucket e do object no OSS console.
maxcompute.endpoint
Sim
O endpoint do MaxCompute.
Para isso, configure este parâmetro com base na região e no tipo de conexão de rede selecionados ao criar o projeto do MaxCompute. Para obter mais informações sobre os endpoints correspondentes a diferentes regiões e tipos de rede, consulte Endpoints.
maxcompute.project
Sim
O nome do projeto do MaxCompute.
O MaxCompute não é compatível com projetos em que o schema feature esteja ativado.
maxcompute.accessid
Sim
O AccessKey ID da conta da Alibaba Cloud ou do usuário RAM que tem permissões no MaxCompute.
Obtenha o AccessKey ID na página AccessKey Management.
maxcompute.accesskey
Sim
O AccessKeySecret que corresponde ao AccessKey ID.
maxcompute.oss.endpoint
Não
O endpoint do OSS que o MaxCompute acessa. Caso você não configure este parâmetro, o sistema usará o valor do parâmetro fs.oss.endpoint por padrão.
ImportanteO bucket do OSS deve residir na mesma região do projeto do MaxCompute. Recomendamos definir o parâmetro maxcompute.oss.endpoint como um endpoint interno. Para obter mais informações sobre os endpoints do OSS de diferentes tipos de rede em cada região, consulte Regions and endpoints.
fs.oss.endpoint
Não
O endpoint do OSS.
Este parâmetro é obrigatório se o bucket do OSS especificado pelo parâmetro warehouse não estiver na mesma região do workspace do Realtime Compute for Apache Flink ou se você usar um bucket do OSS de outra conta da Alibaba Cloud.
NotaPara isso, configure o endpoint com base na região e no método de conexão de rede selecionados ao criar o bucket do OSS. Para obter mais informações sobre os endpoints correspondentes a diferentes regiões e tipos de rede, consulte Regions and endpoints.
fs.oss.accessKeyId
Não
O AccessKey ID da conta da Alibaba Cloud ou do usuário RAM que tem permissões de leitura e gravação no OSS.
Este parâmetro é obrigatório se o bucket do OSS especificado pelo parâmetro warehouse não estiver na mesma região do workspace do Realtime Compute for Apache Flink ou se você usar um bucket do OSS de outra conta da Alibaba Cloud.
Obtenha o AccessKey ID na página AccessKey Management.
fs.oss.accessKeySecret
Não
O AccessKeySecret que corresponde ao AccessKey ID.
Este parâmetro é obrigatório se o bucket do OSS especificado pelo parâmetro warehouse não estiver na mesma região do workspace do Realtime Compute for Apache Flink ou se você usar um bucket do OSS de outra conta da Alibaba Cloud.
-
Agora, crie uma tabela do Apache Paimon.
-
Em seguida, crie uma tabela chamada test_tbl.
Na guia Script, execute a seguinte instrução no editor de scripts e aguarde a exibição de uma mensagem de conclusão na guia Result. Este exemplo usa uma tabela chamada test_tbl.
CREATE TABLE `catalogname`.`default`.test_tbl ( dt STRING, id BIGINT, data STRING, PRIMARY KEY (dt, id) NOT ENFORCED ) PARTITIONED BY (dt); -
Grave dados na tabela test_tbl.
Na página Drafts, crie um job SQL com as seguintes instruções. Em seguida, faça o deploy e execute o job. Para obter mais informações sobre como criar e executar jobs SQL, consulte Job development overview.
-- The checkpoint interval is set to 10s to commit data faster. SET 'execution.checkpointing.interval' = '10s'; INSERT INTO `catalogname`.`default`.test_tbl VALUES ('2023-04-21', 1, 'AAA'), ('2023-04-21', 2, 'BBB'), ('2023-04-22', 1, 'CCC'), ('2023-04-22', 2, 'DDD');NotaA tabela de resultados do Apache Paimon faz o commit dos dados sempre que o checkpointing é concluído.
No ambiente de produção, o intervalo de checkpointing e o intervalo mínimo entre checkpoints variam de acordo com os requisitos de latência do seu negócio. Na maioria dos casos, esses intervalos são definidos entre 1 e 10 minutos.
A versão do mecanismo do rascunho SQL deve ser vvr-8.0.5-flink-1.17 ou posterior.
-
Etapa 3: Leia dados com o MaxCompute
-
Agora, execute os seguintes comandos no Connect using the local client (odpscmd) ou em outra ferramenta capaz de executar instruções SQL do MaxCompute:
SET odps.sql.common.table.planner.ext.hive.bridge = true; SET odps.sql.hive.compatible = true; -
Em seguida, execute o seguinte comando para consultar dados da tabela externa do Apache Paimon test_tbl:
SELECT * FROM test_tbl WHERE dt = '2023-04-21';O resultado retornado é o seguinte:
+------------+------------+------------+ | id | data | dt | +------------+------------+------------+ | 1 | AAA | 2023-04-21 | | 2 | BBB | 2023-04-21 | +------------+------------+------------+