Todos os produtos
Search
Central de documentação

:Tabelas externas do Paimon

Última atualização: Jun 26, 2026

O MaxCompute permite criar tabelas externas do Paimon para acessar diretórios de tabelas do Paimon no OSS. Este tópico descreve como criar e acessar essas tabelas com o MaxCompute.

Contexto

O Apache Paimon é um formato unificado de armazenamento de data lake para streaming e batch que oferece gravações de alto throughput e consultas de baixa latência. O Paimon integra-se bem a mecanismos de computação comuns, como Spark, Hive e Trino, utilizados em serviços como Realtime Compute for Apache Flink e E-MapReduce. Com o Paimon, você pode construir um data lake no OSS e conectá-lo ao MaxCompute para análises. Para mais informações, consulte a documentação oficial do Apache Paimon.

Pré-requisitos

  • Você tem as permissões necessárias para criar tabelas no MaxCompute (CreateTable). Para mais informações, consulte Permissões do MaxCompute.

  • Você criou um projeto do MaxCompute. Para obter instruções, consulte Criar um projeto.

  • Você criou um bucket do OSS e um diretório dentro dele. Para obter instruções, consulte Criar um bucket.

    Nota

    Para evitar problemas de conectividade, crie o bucket na mesma região do seu projeto do MaxCompute.

  • Você ativou o Realtime Compute for Apache Flink. Para obter instruções, consulte Ativar o Realtime Compute for Apache Flink.

Limitações

  • O MaxCompute oferece suporte apenas à leitura de tabelas externas do Paimon. Não há suporte para gravação nessas tabelas nem para detecção automática de alterações de schema na tabela source.

  • O Paimon não é compatível com projetos do MaxCompute que têm o recurso de schema ativado.

  • As tabelas externas do Paimon não oferecem suporte ao atributo de clustering.

  • As tabelas externas do Paimon não oferecem suporte a recursos como consulta de versões históricas de dados.

Sintaxe da tabela externa do Paimon

Use a sintaxe a seguir para criar uma tabela externa do Paimon no MaxCompute:

CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name>
(
<col_name> <data_type>,
...
)
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH SERDEPROPERTIES (
    'odps.properties.rolearn'='acs:ram::xxxxxxxxxxxxx:role/aliyunodpsdefaultrole'
)
LOCATION '<oss_location>'
USING 'paimon_maxcompute_connector.jar';

Se você criar uma tabela particionada, deverá executar um comando adicional para carregar os dados da partição. Para mais informações, consulte Tabelas externas ORC.

  • Método 1 (Recomendado): Analise automaticamente a estrutura de diretórios do OSS para identificar e adicionar partições à tabela externa.

    MSCK REPAIR TABLE <mc_oss_extable_name> ADD PARTITIONS;
  • Método 2: Execute manualmente o comando a seguir para adicionar uma partição.

    ALTER TABLE <mc_oss_extable_name> ADD PARTITION (<col_name>= <col_value>);

Parâmetros

Parâmetro

Obrigatório

Descrição

mc_oss_extable_name

Sim

Nome da tabela externa do Paimon a ser criada.

Os nomes das tabelas não diferenciam maiúsculas de minúsculas. Não é necessário considerar o caso ao consultar a tabela externa.

col_name

Sim

Nome de uma coluna na tabela externa do Paimon.

Ao ler dados do Paimon, o schema da tabela externa deve corresponder ao schema dos arquivos de dados do Paimon. Caso contrário, a operação de leitura falhará.

data_type

Sim

Tipo de dados de uma coluna na tabela externa do Paimon.

Durante a leitura de dados do Paimon, o tipo de dados de cada coluna na tabela externa deve corresponder ao tipo de dados da coluna equivalente nos arquivos de dados do Paimon. Se houver divergência, a operação de leitura falhará.

odps.properties.rolearn

Sim

O Alibaba Cloud Resource Name (ARN) de uma função do RAM com permissões para acessar o OSS.

É possível obter o ARN na página de detalhes da função no console do RAM.

oss_location

Sim

Caminho para os arquivos de dados no OSS. O formato é oss://<oss_endpoint>/<BucketName>/<oss_directory_name>/. Por padrão, o MaxCompute lê todos os arquivos de dados neste caminho.

  • oss_endpoint: Domínio de acesso do OSS. Use um endpoint interno do OSS para evitar taxas de transferência de dados. Exemplo: oss://oss-cn-beijing-internal.aliyuncs.com/xxx. Para obter uma lista de endpoints internos do OSS, consulte Regiões e endpoints.

    Nota

    O bucket do OSS deve estar na mesma região do seu projeto do MaxCompute para evitar problemas de conectividade, pois o MaxCompute é implantado em regiões específicas.

  • BucketName: Nome do bucket do OSS. Para localizar o nome do seu bucket, consulte Listar buckets.

  • oss_directory_name: Nome do diretório no OSS. Não é necessário especificar um nome de arquivo. Exemplo:

    oss://oss-cn-shanghai-internal.aliyuncs.com/oss-mc-test/Demo1/

Procedimento

Etapa 1: Preparar dados no Flink

Crie um catálogo Paimon e uma tabela Paimon e, em seguida, insira dados na tabela. Se você já tem uma tabela Paimon com dados no Realtime Compute for Apache Flink, pule esta etapa.

  1. Acesse o console do Realtime Compute for Apache Flink e crie um catálogo Paimon. Para obter detalhes, consulte Criar um catálogo Paimon.

  2. Crie uma tabela Paimon. Para obter detalhes, consulte Gerenciar tabelas Paimon.

    1. Na página Metadata Management, navegue até o catálogo Paimon criado, selecione o banco de dados default e clique em Create Table.

    2. Na caixa de diálogo Add Table, selecione o conector Apache Paimon, insira a instrução a seguir e clique em OK. Este exemplo cria 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);
    3. Na página SQL Editor, crie, implante e execute um job SQL contendo a seguinte instrução. Para mais informações sobre como criar e executar um job SQL, consulte Visão geral do desenvolvimento de jobs.

      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');
      Nota
      • Certifique-se de que a versão do mecanismo para o job SQL seja vvr-8.0.1-flink-1.17 ou posterior.

      • Se o seu job SQL apresentar backpressure (por exemplo, ao executar instruções INSERT INTO ... VALUES ...), acesse a página Job O&M, edite os Execution Parameters e, na seção Other Configurations, defina execution.checkpointing.checkpoints-after-tasks-finish.enabled: true. Para obter detalhes sobre como configurar parâmetros de tempo de execução de um job, consulte Configurar informações de implantação do job.

Etapa 2: Carregar o conector Paimon

Use um dos métodos a seguir para carregar o conector Paimon no seu projeto do MaxCompute.

Cliente do MaxCompute

Usar o cliente (odpscmd) para acessar o projeto do MaxCompute e execute o código a seguir para carregar o arquivo paimon_maxcompute_connector.jar no projeto.

ADD JAR <path_to_paimon_maxcompute_connector.jar>;

DataWorks

  1. Faça login no console do DataWorks. No painel de navegação à esquerda, clique em Workspaces. Localize o workspace desejado e clique em Go to DataStudio na coluna Actions.

  2. Na página Data Development, clique no ícone Create e selecione Resource > JAR.

  3. Na caixa de diálogo Create Resource, configure os parâmetros do novo recurso, carregue o arquivo paimon_maxcompute_connector.jar e clique em Create. Para mais informações, consulte Etapa 1: Criar ou carregar um recurso.

    Defina Resource Type como JAR e selecione Upload as ODPS resource.

  4. Após a criação do recurso, clique no ícone image.png na barra de ferramentas para enviar o recurso ao servidor.

Etapa 3: Criar uma tabela externa do Paimon

Conecte-se usando o cliente local (odpscmd) ou use outra ferramenta capaz de executar SQL do MaxCompute para criar uma tabela externa do Paimon no MaxCompute. Este tópico usa oss_extable_paimon_1pt como exemplo.

CREATE EXTERNAL TABLE oss_extable_paimon_1pt
(
    id BIGINT,
    data STRING
)
PARTITIONED BY (dt STRING)
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH SERDEPROPERTIES (
    'odps.properties.rolearn'='acs:ram::124*********:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/paimon_flink/test_db_y.db/test_tbl/'
USING 'paimon_maxcompute_connector.jar'
;

Etapa 4: Ler a tabela externa do Paimon

  1. Conecte-se usando o cliente do MaxCompute (odpscmd) ou outra ferramenta que execute SQL do MaxCompute e, em seguida, execute os comandos a seguir:

    SET odps.sql.common.table.planner.ext.hive.bridge = true;
    SET odps.sql.hive.compatible = true;
  2. Execute o comando a seguir para consultar a tabela externa do Paimon no MaxCompute oss_extable_paimon_1pt.

    SELECT * FROM oss_extable_paimon_1pt;

    O exemplo de resultado a seguir é retornado:

    +------------+------------+------------+
    | id         | data       | dt         |
    +------------+------------+------------+
    | 1          | AAA        | 2023-04-21 |
    | 2          | BBB        | 2023-04-21 |
    +------------+------------+------------+
    Nota

    Se as partições não aparecerem no resultado, execute o comando a seguir para adicioná-las:

    MSCK REPAIR TABLE oss_extable_paimon_1pt ADD PARTITIONS;

Documentação relacionada

Você também pode criar uma tabela externa do Paimon no MaxCompute como um catálogo personalizado no Realtime Compute for Apache Flink. Isso permite consultar e consumir os dados do Paimon com o MaxCompute após a gravação. Para mais informações, consulte Criar uma tabela externa do Paimon usando o Realtime Compute for Apache Flink.