Crear tabla
Paimon* está condicionada por allow_experimental_paimon_storage_engine (desactivado de forma predeterminada), así que actívelo antes de ejecutar CREATE TABLE.
Argumentos del motor
S3, AzureBlobStorage, HDFS y File, respectivamente.
format corresponde al formato de los archivos de datos de la tabla Paimon.
Los parámetros del motor se pueden especificar mediante colecciones con nombre
Ejemplo
Capacidades
- Lecturas de instantáneas a partir de la instantánea más reciente de la tabla.
- Lecturas incrementales basadas en el ID de la instantánea confirmada cuando están habilitadas.
- Poda de particiones cuando
use_paimon_partition_pruningestá habilitado. - Actualización opcional de metadatos en segundo plano cuando se configura.
- UUID de tabla estable al usar bases de datos Atomic/Replicated, lo que permite usar macros
{uuid}en las rutas de Keeper.
Configuración
allow_experimental_paimon_storage_engine— habilita la creación de los motores de tablaPaimon,PaimonS3,PaimonAzure,PaimonHDFSyPaimonLocal. Valor predeterminado:0(deshabilitado).paimon_incremental_read— habilita el modo de lectura incremental.paimon_metadata_refresh_interval_sec— intervalo, en segundos, de actualización de metadatos en segundo plano. Cuando se establece en un valor superior a 0, una tarea en segundo plano obtiene periódicamente la instantánea y el esquema más recientes desde el almacenamiento de objetos. Valor predeterminado: 30.paimon_keeper_path— ruta de Keeper para el estado de lectura incremental. Debe configurarse y ser única para cada tabla; admite macros como{database},{table},{uuid}.paimon_replica_name— nombre de la réplica para el estado de lectura incremental. Debe configurarse y ser único para cada réplica; admite macros como{replica}.
Ejemplos de lectura incremental
Configuración a nivel de consulta para la lectura incremental
SELECT ... SETTINGS, no en CREATE TABLE). Controla el comportamiento de las lecturas incrementales en cada consulta:
paimon_target_snapshot_id— lee solo el delta de la instantánea especificada. El watermark confirmado en Keeper no avanza, por lo que la misma instantánea puede volver a leerse cualquier número de veces. Valor predeterminado:-1(deshabilitado).max_consume_snapshots— número máximo de instantáneas que se pueden consumir en una sola lectura incremental. Cuando el origen ha acumulado muchas instantáneas sin leer, esto limita cuántas se consumen por consulta para controlar el tamaño del lote.0significa sin límite. Valor predeterminado:0.
De Paimon a MergeTree mediante una vista materializada actualizable
APPEND. Cada ciclo de actualización lee solo los datos incrementales nuevos de Paimon y los añade a la tabla de destino.
Paso 1 — Cree la tabla de origen de Paimon con la lectura incremental y la actualización de metadatos habilitados.
En el ejemplo siguiente se usa PaimonLocal. Sustituya el motor por PaimonS3, PaimonAzure, PaimonHDFS o el alias Paimon, según corresponda para su backend de almacenamiento:
paimon_metadata_refresh_interval_sec establece el intervalo, en segundos, de actualización de metadatos en segundo plano. Cuando es mayor que 0, una tarea en segundo plano obtiene periódicamente la instantánea y el esquema más recientes del almacenamiento de objetos, para que el ciclo de actualización de la MV pueda ver los datos recién confirmados sin esperar a que una consulta active la actualización de metadatos. El valor predeterminado es 30. Úselo con cautela en muchas tablas para evitar un exceso de E/S en el almacenamiento de objetos y en Keeper.
Paso 2 — Cree la tabla de destino MergeTree (con el esquema clonado de la tabla Paimon):
SELECT * FROM paimon_mv_source, que devuelve solo las filas añadidas desde la última instantánea confirmada y las agrega a paimon_mv_dest.
Limpieza:
Detén la MV antes de eliminarla para evitar que la actualización en segundo plano bloquee las operaciones DDL.
Limitaciones
- La lectura incremental requiere que Keeper (ZooKeeper) esté configurado.
- La lectura incremental requiere que
paimon_keeper_pathesté configurado y sea único para cada tabla. paimon_replica_namedebe ser único para cada réplica dentro de la misma ruta de Keeper.- La lectura incremental usa entrega como máximo una vez: la instantánea confirmada avanza cuando se recopilan los archivos de datos, antes de que los datos se consuman realmente. Si la consulta falla después de la recopilación de archivos, las instantáneas omitidas no se volverán a leer en un reintento.
- El motor de tabla es de solo lectura; no se admite la modificación de datos.
- La lectura incremental no gestiona las eliminaciones de datos históricos del origen Paimon. Si los datos de Paimon se eliminan o actualizan, las filas correspondientes ya escritas en una tabla de destino MergeTree de ClickHouse no se eliminarán automáticamente. Debe ejecutar manualmente
ALTER TABLE ... DELETEen la tabla MergeTree para limpiar los datos obsoletos.
Alias
Paimon ahora es un alias de PaimonS3.
Columnas virtuales
_path— Ruta del archivo. Tipo:LowCardinality(String)._file— Nombre del archivo. Tipo:LowCardinality(String)._size— Tamaño del archivo en bytes. Tipo:Nullable(UInt64). Si se desconoce el tamaño del archivo, el valor esNULL._time— Fecha y hora de la última modificación del archivo. Tipo:Nullable(DateTime). Si se desconoce la fecha y hora, el valor esNULL._etag— El etag del archivo. Tipo:LowCardinality(String). Si se desconoce el etag, el valor esNULL.
Tipos de datos admitidos
| Tipo de dato de Paimon | Tipo de dato de ClickHouse |
|---|---|
| BOOLEAN | Int8 |
| TINYINT | Int8 |
| SMALLINT | Int16 |
| INTEGER | Int32 |
| BIGINT | Int64 |
| FLOAT | Float32 |
| DOUBLE | Float64 |
| STRING,VARCHAR,BYTES,VARBINARY | String |
| DATE | Date |
| TIME(p),TIME | Time(‘UTC’) |
| TIMESTAMP(p) WITH LOCAL TIME ZONE | DateTime64 |
| TIMESTAMP(p) | DateTime64(‘UTC’) |
| CHAR | FixedString(1) |
| BINARY(n) | FixedString(n) |
| DECIMAL(P,S) | Decimal(P,S) |
| ARRAY | Array |
| MAP | Map |
Compatibilidad de particiones
CHARVARCHARBOOLEANDECIMALTINYINTSMALLINTINTEGERDATETIMETIMESTAMPTIMESTAMP WITH LOCAL TIME ZONEBIGINTFLOATDOUBLE