Todos los productos
Search
Centro de documentos

MaxCompute:Tabla externa de Paimon

Última actualización: Sep 21, 2026

MaxCompute le permite crear una tabla externa de Paimon para asignarla a un directorio de tablas de Paimon almacenado en Object Storage Service (OSS) y acceder a los datos que contiene. Este tema describe cómo crear una tabla externa de Paimon y acceder a ella con MaxCompute.

Descripción general

Apache Paimon es un formato de almacenamiento lakehouse para procesamiento por lotes y de streaming que ofrece escrituras de alto throughput y consultas de baja latencia. Se integra por completo con motores de cómputo comunes como Spark, Hive y Trino, así como con Realtime Compute for Apache Flink y E-MapReduce. Con Apache Paimon puede construir rápidamente un data lake en OSS y conectarlo a MaxCompute para realizar análisis. La función de filtrado de metadatos mejora aún más el rendimiento de las consultas, ya que omite archivos innecesarios de los directorios de OSS durante los trabajos de lectura.

Limitaciones

  • Limitaciones de esquema

    Las tablas externas de Paimon no actualizan automáticamente sus esquemas para reflejar los cambios en los archivos subyacentes de Paimon.

  • Limitaciones de propiedades de tabla

    • No es posible establecer propiedades de clúster en una tabla externa de Paimon.

    • No se admite la configuración de una clave principal.

    • Las tablas externas de Paimon no admiten la transferencia directa de las propiedades de tabla de Paimon.

  • Operaciones de escritura, actualización y consulta de datos

    • Utilice las instrucciones INSERT INTO o INSERT OVERWRITE para escribir datos en una tabla externa de Paimon.

    • No se admite la escritura de datos en tablas de buckets dinámicos ni en tablas entre particiones.

    • Las operaciones UPDATE y DELETE no son compatibles con las tablas externas de Paimon.

    • Las consultas time-travel que acceden a versiones históricas de datos no están disponibles para las tablas externas de Paimon.

    • No escriba datos directamente en las tablas externas de Paimon. En su lugar, utilice métodos como UNLOAD para exportar los datos a OSS.

  • MaxCompute y OSS deben encontrarse en la misma región.

  • Para obtener más información, consulte Supported data types.

Descripción de permisos

  • Cuando accede a tablas externas de OSS, los datos se consultan mediante el rol especificado en el parámetro odps.properties.rolearn. Esto aplica sin importar si utiliza una cuenta de Alibaba Cloud, un usuario de RAM o un rol de RAM. Por lo tanto, debe crear un rol de RAM, otorgarle permisos para acceder al bucket de OSS de destino y configurar el ARN del rol en el parámetro odps.properties.rolearn. Para obtener más información, consulte Parameters.

  • Puede autorizar el acceso dentro de la misma cuenta o entre cuentas distintas según sus necesidades de negocio. Se recomienda utilizar una directiva de autorización personalizada para lograr un control de acceso más detallado. Para obtener más información, consulte Authorization for external data sources.

Crear una tabla externa de Paimon

Sintaxis

Para conocer los detalles sobre la sintaxis de creación de tablas externas en distintos 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/<role_name>'
)
LOCATION '<oss_location>';

Parámetros comunes

Para obtener más información sobre los parámetros comunes, consulte Basic syntax parameters.

Escribir datos

Para conocer los detalles de la sintaxis de escritura en MaxCompute, consulte Write syntax.

Consultar y analizar datos

  • La lógica de fragmentación de datos (split) de las tablas de Paimon difiere de la de las tablas nativas de MaxCompute. El formato Paimon cuenta con mecanismos internos propios para organizar y fragmentar archivos, los cuales no se alinean por completo con los parámetros de MaxCompute.

  • Para consultar la sintaxis SELECT, consulte Query syntax.

  • Si necesita optimizar los planes de consulta, consulte Query optimization.

  • Para obtener más información sobre cómo omitir filas con errores, consulte BadRowSkipping.

Ejemplo

Paso 1: Requisitos previos

  1. Cuenta con created a MaxCompute project.

  2. Preparó un bucket y un directorio de OSS. Para obtener más información, consulte Create a bucket y Manage directories.

    Asegúrese de que su bucket se encuentre en la misma región que su proyecto de MaxCompute.
  3. Otorgue los permisos correspondientes.

    1. Debe tener permiso para acceder a OSS. Es posible acceder a una tabla externa de OSS mediante una cuenta de Alibaba Cloud, un usuario de RAM o un rol de RAM. Para obtener más información sobre cómo otorgar permisos, consulte STS-mode authorization for OSS.

    2. Requiere el permiso CreateTable en el proyecto de MaxCompute. Para obtener más información sobre los permisos relacionados con tablas, consulte MaxCompute permissions.

Paso 2: Preparar datos en Flink

Cree un catálogo de Paimon y una tabla de Paimon; después, inserte datos en la tabla.

Nota

Si ya cuenta con datos de tablas de Paimon en OSS, omita este paso.

  1. Crear un catálogo de sistema de archivos de Paimon

    1. Inicie sesión en la consola de real-time compute for Apache Flink y seleccione una región en la esquina superior izquierda.

    2. Haga clic en el nombre del espacio de trabajo de destino y, en el panel de navegación izquierdo, seleccione Data Management.

    3. En la página catalog list , haga clic en Create Catalog . En el cuadro de diálogo Create Catalog , seleccione Apache Paimon, haga clic en Next y configure los siguientes parámetros:

      Parámetro

      Obligatorio

      Descripción

      metastore

      Sí

      Tipo de metastore. En este ejemplo, seleccione filesystem.

      catalog name

      Sí

      Nombre personalizado del catálogo, por ejemplo, paimon-catalog.

      warehouse

      Sí

      Directorio del almacén en OSS. En este ejemplo, el directorio es oss://paimon-fs/paimon-test/.

      fs.oss.endpoint

      Sí

      Endpoint del servicio OSS. Por ejemplo, el endpoint de la región China (Hangzhou) es oss-cn-hangzhou-internal.aliyuncs.com.

      fs.oss.accessKeyId

      Sí

      AccessKey ID utilizado para acceder a OSS.

      fs.oss.accessKeySecret

      Sí

      AccessKey secret utilizado para acceder a OSS.

  2. Crear una tabla de Paimon

    1. Inicie sesión en la consola de real-time compute for Apache Flink y seleccione una región en la esquina superior izquierda.

    2. Haga clic en el nombre del espacio de trabajo de destino y, en el panel de navegación izquierdo, seleccione Development > Data Query.

    3. En la pestaña Query Script, haga clic en image para crear un nuevo script de consulta.

      Introduzca y ejecute los siguientes 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 los trabajos SQL que finalizan automáticamente, como aquellos que ejecutan una instrucción INSERT INTO ... VALUES ..., siga estos pasos:

    1. Haga clic en el nombre del espacio de trabajo de destino. En el panel de navegación izquierdo, elija O&M > Deployments.

    2. En la página Deployments, haga clic en el trabajo de destino para abrir la página de deployment details.

    3. En la sección Parameters, haga clic en Edit. Después, en la sección Other Configuration, establezca execution.checkpointing.checkpoints-after-tasks-finish.enabled: true y guarde los cambios.

      Para obtener más información sobre cómo configurar los parámetros de ejecución de un trabajo, consulte Configure job deployment information.

Paso 3: Crear una tabla externa de Paimon

Ejecute la siguiente instrucción SQL en MaxCompute para crear una tabla externa de 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/<role_name>'
)
LOCATION 'oss://oss-cn-<your region>-internal.aliyuncs.com/<table_path>'
;

En la instrucción anterior, table_path es la ruta de la tabla de Paimon que creó en Flink, por ejemplo, paimon-fs/paimon-test/default.db/test_tbl. Siga estos pasos para localizar dicha ruta:

  1. Inicie sesión en la consola de real-time compute for Apache Flink y seleccione una región en la esquina superior izquierda.

  2. Haga clic en el nombre del espacio de trabajo de destino y, en el panel de navegación izquierdo, seleccione Data Management.

  3. En la página Catalogs, debajo del catálogo de destino, haga clic en default. En la página default, busque la tabla de destino y haga clic en View en la columna Actions.

  4. En la pestaña Table Schema, copie el valor del parámetro path de la sección Properties. Para table_path, introduzca la ruta sin el prefijo oss://.

Paso 4: Cargar datos de partición

Si la tabla externa de OSS que creó está particionada, debe cargar sus particiones. Para obtener más información, consulte OSS external tables.

MSCK REPAIR TABLE oss_extable_paimon_pt ADD PARTITIONS;

Paso 5: Consultar la tabla externa de Paimon

Ejecute los siguientes comandos en MaxCompute para consultar la tabla externa de 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';

Se devuelve el siguiente resultado:

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

Si el esquema de los archivos de Paimon difiere del esquema de la tabla externa:

  • Discrepancia en la cantidad de columnas: Si los archivos de Paimon contienen menos columnas que la definición DDL de la tabla externa, MaxCompute lee las columnas faltantes como NULL. Si los archivos contienen más columnas, MaxCompute las ignora.

  • Discrepancia en el tipo de columna: No es posible leer datos de una columna STRING de Paimon hacia una columna INT de MaxCompute. Leer datos de una columna INT hacia una columna STRING sí es compatible, aunque no se recomienda.

Tipos de datos compatibles

Para obtener más información sobre los tipos de datos de MaxCompute, consulte Data type editions 1.0 y 2.0.

Tipo de dato de Paimon

Tipo de dato de MaxCompute 2.0

Compatibilidad de lectura/escritura

Descripción

TINYINT

TINYINT

Compatible

Entero con signo de 8 bits.

SMALLINT

SMALLINT

Compatible

Entero con signo de 16 bits.

INT

INT

Compatible

Entero con signo de 32 bits.

BIGINT

BIGINT

Compatible

Entero con signo de 64 bits.

BINARY(MAX_LENGTH)

BINARY

Compatible

Tipo de dato binario. La longitud máxima actual es de 8 MB.

FLOAT

FLOAT

Compatible

Número de punto flotante binario de 32 bits.

DOUBLE

DOUBLE

Compatible

Número de punto flotante binario de 64 bits.

DECIMAL(precision,scale)

DECIMAL(precision,scale)

Compatible

Tipo numérico decimal exacto. El valor predeterminado es decimal(38.18). Puede personalizar los valores de precisión y escala.

  • precision: Cantidad máxima de dígitos. Los valores válidos van de 1 a 38.

  • scale: Cantidad de dígitos en la parte fraccionaria. Los valores válidos van de 0 a 18.

VARCHAR(n)

VARCHAR(n)

Compatible

Tipo de carácter de longitud variable. n especifica la longitud y su rango va de 1 a 65,535.

CHAR(n)

CHAR(n)

Compatible

Tipo de carácter de longitud fija. n especifica la longitud y su rango va de 1 a 255.

VARCHAR(MAX_LENGTH)

STRING

Compatible

Tipo de cadena. La longitud máxima actual es de 8 MB.

DATE

DATE

Compatible

Tipo de fecha. El formato es yyyy-mm-dd.

TIME, TIME(p)

No compatible

No compatible

El tipo de dato TIME de Paimon representa una hora sin zona horaria, compuesta por horas, minutos y segundos, con precisión de nanosegundos.

TIME(p) especifica la precisión de los segundos fraccionarios de 0 a 9. El valor predeterminado es 0.

No existe un tipo equivalente en MaxCompute.

TIMESTAMP, TIMESTAMP(p)

TIMESTAMP_NTZ

Compatible

Tipo de marca de tiempo sin zona horaria, con precisión de nanosegundos.

Para leer este tipo de dato, debe deshabilitar el puente JNI nativo mediante la ejecución del siguiente comando: SET odps.sql.common.table.jni.disable.native=true;

TIMESTAMP WITH LOCAL TIME_ZONE(9)

TIMESTAMP

Compatible

  • Tipo de marca de tiempo con precisión de nanosegundos. El formato es yyyy-mm-dd hh:mm:ss.xxxxxxxxx.

  • Para los tipos TIMESTAMP de baja precisión en la tabla de origen de Paimon, MaxCompute trunca los valores durante la escritura. Con precisión de 0 a 3, los datos se truncan a 3 dígitos. Con precisión de 4 a 6, se truncan a 6 dígitos. Con precisión de 7 a 9, se truncan a 9 dígitos.

TIMESTAMP WITH LOCAL TIME_ZONE(9)

DATETIME

No compatible

Tipo de marca de tiempo con precisión de nanosegundos.

El formato es yyyy-mm-dd hh:mm:ss.xxxxxxxxx.

BOOLEAN

BOOLEAN

Compatible

Tipo BOOLEAN.

ARRAY

ARRAY

Compatible

Tipo complejo.

MAP

MAP

Compatible

Tipo complejo.

ROW

STRUCT

Compatible

Tipo complejo.

MULTISET<t>

No compatible

No compatible

No existe un tipo equivalente en MaxCompute.

VARBINARY, VARBINARY(n), BYTES

BINARY

Compatible

Tipo de dato de cadenas binarias de longitud variable.

Solución de problemas

Error kSIGABRT al leer una tabla externa de Paimon

  • Mensaje de error:

    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 error ocurre cuando se lee una columna TIMESTAMP_NTZ en modo JNI.

  • Solución:

    Deshabilite el puente JNI mediante la ejecución del siguiente comando antes de su consulta: SET odps.sql.common.table.jni.disable.native=true;

Artículos relacionados

También puede usar un catálogo personalizado de Flink para gestionar las tablas externas de Paimon en MaxCompute. Esto le permite escribir datos con Flink y consultarlos en MaxCompute. Para obtener más información, consulte Create a MaxCompute Paimon external table by using Flink.