Todos os produtos
Search
Central de documentação

MaxCompute:Tabela externa do Paimon

Última atualização: Aug 21, 2026

O MaxCompute permite criar uma tabela externa do Paimon para mapear um diretório de tabela do Paimon armazenado no Object Storage Service (OSS) e acessar os dados nele contidos. Este tópico descreve como criar uma tabela externa do Paimon e acessá-la com o MaxCompute.

Visão geral

O Apache Paimon é um formato de armazenamento lakehouse para processamento em streaming e em lote que oferece gravações de alto throughput e consultas de baixa latência. Ele se integra totalmente a mecanismos de computação comuns, como Spark, Hive e Trino, além de Realtime Compute for Apache Flink e E-MapReduce. Use o Apache Paimon para construir rapidamente um data lake no OSS e conectá-lo ao MaxCompute para análises. O recurso de filtragem de metadados melhora ainda mais o desempenho das consultas ao ignorar arquivos de diretório desnecessários no OSS durante jobs de leitura.

Limitações

  • Limitações de schema

    As tabelas externas do Paimon não atualizam automaticamente seus schemas para refletir alterações nos arquivos subjacentes do Paimon.

  • Limitações de propriedades da tabela

    • Não é possível definir propriedades de cluster em uma tabela externa do Paimon.

    • Não há suporte para definição de chave primária.

    • Tabelas externas do Paimon não suportam o repasse de propriedades da tabela Paimon.

  • Operações de gravação, atualização e consulta de dados

    • Use instruções INSERT INTO ou INSERT OVERWRITE para gravar dados em uma tabela externa do Paimon.

    • Não há suporte para gravação de dados em tabelas de bucket dinâmico e tabelas entre partições.

    • As operações UPDATE e DELETE não são suportadas em tabelas externas do Paimon.

    • Consultas time-travel que acessam versões históricas de dados não estão disponíveis para tabelas externas do Paimon.

    • Não grave dados diretamente nas tabelas externas do Paimon. Em vez disso, utilize métodos como UNLOAD para exportar dados para o OSS.

  • O MaxCompute e o OSS devem estar na mesma região.

  • Para obter mais informações, consulte Supported data types.

Criar uma tabela externa do Paimon

Sintaxe

Para detalhes sobre a sintaxe de criação de tabelas externas em diferentes formatos, consulte OSS external tables.

CREATE EXTERNAL TABLE  [if NOT EXISTS] <mc_oss_extable_name>
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
  'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole'
)
LOCATION '<oss_location>';

Parâmetros comuns

Para mais informações sobre parâmetros comuns, consulte Basic syntax parameters.

Gravar dados

Para detalhes sobre a sintaxe de gravação no MaxCompute, consulte Write syntax.

Consultar e analisar dados

  • A lógica de fragmentação (split) de dados para tabelas Paimon difere daquela usada em tabelas nativas do MaxCompute. O formato Paimon possui mecanismos internos próprios para organização e fragmentação de arquivos, que não se alinham totalmente aos parâmetros do MaxCompute.

  • Para a sintaxe SELECT, consulte Query syntax.

  • Para otimizar planos de consulta, consulte Query optimization.

  • Para mais informações sobre como ignorar linhas corrompidas, consulte BadRowSkipping.

Exemplo

Etapa 1: Pré-requisitos

  1. Você já created a MaxCompute project.

  2. Prepare um bucket e um diretório no OSS. Para mais informações, consulte Create a bucket e Manage directories.

    Certifique-se de que seu bucket esteja na mesma região do seu projeto MaxCompute.
  3. Conceda as permissões necessárias.

    1. Verifique se você tem permissão para acessar o OSS. É possível acessar uma tabela externa do OSS usando uma conta Alibaba Cloud, um usuário RAM ou uma função RAM. Para saber como conceder permissões, consulte STS-mode authorization for OSS.

    2. Confirme se você possui a permissão CreateTable no projeto MaxCompute. Para mais informações sobre permissões relacionadas a tabelas, consulte MaxCompute permissions.

Etapa 2: Preparar dados no Flink

Crie um catálogo Paimon e uma tabela Paimon e, em seguida, insira dados na tabela.

Nota

Se você já tiver dados de tabela Paimon no OSS, pule esta etapa.

  1. Criar um catálogo de sistema de arquivos Paimon

    1. Faça login no console do real-time compute for Apache Flink e selecione uma região no canto superior esquerdo.

    2. Clique em nome do workspace desejado e, no painel de navegação à esquerda, selecione Data Management.

    3. 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. Neste exemplo, selecione filesystem.

      catalog name

      Sim

      Nome personalizado para o catálogo, como paimon-catalog.

      warehouse

      Sim

      Diretório warehouse no OSS. Neste exemplo, o diretório é oss://paimon-fs/paimon-test/.

      fs.oss.endpoint

      Sim

      Endpoint do service OSS. Por exemplo, o endpoint para a região China (Hangzhou) é oss-cn-hangzhou-internal.aliyuncs.com.

      fs.oss.accessKeyId

      Sim

      AccessKey ID usado para acessar o OSS.

      fs.oss.accessKeySecret

      Sim

      AccessKey secret usado para acessar o OSS.

  2. Criar uma tabela Paimon

    1. Faça login no console do real-time compute for Apache Flink e selecione uma região no canto superior esquerdo.

    2. Clique em nome do workspace desejado e, no painel de navegação à esquerda, selecione Development > Data Query.

    3. Na aba Query Script, clique em image para criar um novo script de consulta.

      Insira e execute os seguintes comandos:

      CREATE TABLE `paimon_catalog`.`default`.test_tbl (
          id BIGINT,
          data STRING,
          dt STRING,
          PRIMARY KEY (dt, id) NOT ENFORCED
      ) PARTITIONED BY (dt);
      
      INSERT INTO `paimon-catalog`.`default`.test_tbl VALUES (1,'CCC','2024-07-18'), (2,'DDD','2024-07-18');
  3. Para jobs SQL que terminam automaticamente, como aqueles que executam uma instrução INSERT INTO ... VALUES ..., realize as seguintes operações:

    1. Clique em nome do workspace desejado. No painel de navegação à esquerda, escolha O&M > Deployments.

    2. Na página Deployments, clique em job desejado para abrir a página de deployment details.

    3. Na seção Parameters, clique em Edit. Em seguida, na seção Other Configuration, defina execution.checkpointing.checkpoints-after-tasks-finish.enabled: true e salve suas alterações.

      Para mais informações sobre como configurar parâmetros de tempo de execução para um job, consulte Configure job deployment information.

Etapa 3: Criar uma tabela externa do Paimon

Execute a seguinte instrução SQL no MaxCompute para criar uma tabela externa do Paimon:

CREATE EXTERNAL TABLE oss_extable_paimon_pt
(
    id BIGINT,
    data STRING
)
PARTITIONED BY (dt STRING )
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
    'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-<your region>-internal.aliyuncs.com/<table_path>'
;

Na instrução anterior, table_path é o caminho para a tabela Paimon criada no Flink, como paimon-fs/paimon-test/default.db/test_tbl. Para encontrar esse caminho, siga estas etapas:

  1. Faça login no console do real-time compute for Apache Flink e selecione uma região no canto superior esquerdo.

  2. Clique em nome do workspace desejado e, no painel de navegação à esquerda, selecione Data Management.

  3. Na página Catalogs, sob o catálogo desejado, clique em default. Na página default, localize a tabela desejada e clique em View na coluna Actions.

  4. Na aba Table Schema, copie o valor do parâmetro path na seção Properties. Para table_path, insira o caminho sem o prefixo oss://.

Etapa 4: Carregar dados de partição

Se a tabela externa do OSS criada for particionada, será necessário carregar suas partições. Para mais informações, consulte OSS external tables.

MSCK REPAIR TABLE oss_extable_paimon_pt ADD PARTITIONS;

Etapa 5: Consultar a tabela externa do Paimon

Execute os seguintes comandos no MaxCompute para consultar a tabela externa do Paimon oss_extable_paimon_pt.

SET odps.sql.common.table.planner.ext.hive.bridge = true;
SET odps.sql.hive.compatible = true;
SELECT * FROM oss_extable_paimon_pt WHERE dt='2024-07-18';

O seguinte resultado é retornado:

+------------+------------+------------+
| id         | data       | dt         | 
+------------+------------+------------+
| 1          | CCC        | 2024-07-18 | 
| 2          | DDD        | 2024-07-18 | 
+------------+------------+------------+
Nota

Se o schema nos arquivos Paimon diferir do schema da tabela externa:

  • Incompatibilidade de contagem de colunas: Se os arquivos Paimon contiverem menos colunas do que o DDL da tabela externa, o MaxCompute lerá as colunas ausentes como NULL. Caso os arquivos contenham mais colunas, o MaxCompute as ignorará.

  • Incompatibilidade de tipo de coluna: Não é possível ler dados de uma coluna STRING do Paimon em uma coluna INT do MaxCompute. A leitura de dados de uma coluna INT para uma coluna STRING é suportada, mas não recomendada.

Tipos de dados suportados

Para mais informações sobre os tipos de dados do MaxCompute, consulte Data type editions 1.0 e 2.0.

Tipo de dados Paimon

Tipo de dados MaxCompute 2.0

Suporte a leitura/gravação

Descrição

TINYINT

TINYINT

Supported

Inteiro assinado de 8 bits.

SMALLINT

SMALLINT

Supported

Inteiro assinado de 16 bits.

INT

INT

Supported

Inteiro assinado de 32 bits.

BIGINT

BIGINT

Supported

Inteiro assinado de 64 bits.

BINARY(MAX_LENGTH)

BINARY

Supported

Tipo de dados binário. O comprimento máximo atual é de 8 MB.

FLOAT

FLOAT

Supported

Número de ponto flutuante binário de 32 bits.

DOUBLE

DOUBLE

Supported

Número de ponto flutuante binário de 64 bits.

DECIMAL(precision,scale)

DECIMAL(precision,scale)

Supported

Tipo numérico decimal exato. O padrão é decimal(38,18). Você pode personalizar os valores de precisão e escala.

  • precision: Número máximo de dígitos. Os valores válidos variam de 1 a 38.

  • scale: Número de dígitos na parte fracionária. Os valores válidos variam de 0 a 18.

VARCHAR(n)

VARCHAR(n)

Supported

Tipo de caractere de comprimento variável. n especifica o comprimento e varia de 1 a 65.535.

CHAR(n)

CHAR(n)

Supported

Tipo de caractere de comprimento fixo. n especifica o comprimento e varia de 1 a 255.

VARCHAR(MAX_LENGTH)

STRING

Supported

Tipo string. O comprimento máximo atual é de 8 MB.

DATE

DATE

Supported

Tipo data. O formato é yyyy-mm-dd.

TIME, TIME(p)

Não suportado

Not supported

O tipo de dados TIME do Paimon representa uma hora sem fuso horário, consistindo em horas, minutos e segundos, com precisão de nanossegundos.

TIME(p) especifica a precisão dos segundos fracionários de 0 a 9. O valor padrão é 0.

Não existe tipo correspondente no MaxCompute.

TIMESTAMP, TIMESTAMP(p)

TIMESTAMP_NTZ

Supported

Tipo timestamp sem fuso horário, preciso até o nanossegundo.

Para ler este tipo de dados, desative a ponte JNI nativa executando o seguinte comando: SET odps.sql.common.table.jni.disable.native=true;

TIMESTAMP WITH LOCAL TIME_ZONE(9)

TIMESTAMP

Supported

  • Tipo timestamp preciso até o nanossegundo. O formato é yyyy-mm-dd hh:mm:ss.xxxxxxxxx.

  • Para tipos TIMESTAMP de baixa precisão na tabela de source Paimon, o MaxCompute trunca os valores durante a gravação. Para precisão 0-3, os dados são truncados para 3 dígitos. Para precisão 4-6, os dados são truncados para 6 dígitos. Para precisão 7-9, os dados são truncados para 9 dígitos.

TIMESTAMP WITH LOCAL TIME_ZONE(9)

DATETIME

Not supported

Tipo timestamp preciso até o nanossegundo.

O formato é yyyy-mm-dd hh:mm:ss.xxxxxxxxx.

BOOLEAN

BOOLEAN

Supported

Tipo BOOLEAN.

ARRAY

ARRAY

Supported

Tipo complexo.

MAP

MAP

Supported

Tipo complexo.

ROW

STRUCT

Supported

Tipo complexo.

MULTISET<t>

Não suportado

Not supported

Não existe tipo correspondente no MaxCompute.

VARBINARY, VARBINARY(n), BYTES

BINARY

Supported

Tipo de dados de strings binárias de comprimento variável.

Solução de problemas

Erro kSIGABRT ao ler uma tabela externa do Paimon

  • Mensagem de erro:

    ODPS-0123144: Fuxi job failed - kSIGABRT(errCode:6) at Odps/*****_SQL_0_1_0_job_0/M1@f01b17437.cloud.eo166#3. 
      Detail error msg: CRASH_CORE, maybe caused by jvm crash, please check your java udf/udaf/udtf. 
      | fatalInstance: Odps/*****_SQL_0_1_0_job_0/M1#0_0 
  • Causa:

    Este erro ocorre ao ler uma coluna TIMESTAMP_NTZ no modo JNI.

  • Solução:

    Desative a ponte JNI executando o seguinte comando antes da sua consulta: SET odps.sql.common.table.jni.disable.native=true;

Artigos relacionados

Também é possível usar um catálogo Flink personalizado para gerenciar tabelas externas Paimon do MaxCompute. Isso permite gravar dados usando o Flink e consultá-los no MaxCompute. Para mais informações, consulte Create a MaxCompute Paimon external table by using Flink.