Criar tabela
Paimon* é condicionada por allow_experimental_paimon_storage_engine (desabilitado por padrão), portanto habilite-o antes de executar CREATE TABLE.
Argumentos do mecanismo
S3, AzureBlobStorage, HDFS e File, respectivamente.
format indica o formato dos arquivos de dados na tabela Paimon.
Os parâmetros do mecanismo podem ser especificados usando coleções nomeadas
Exemplo
Recursos
- Leituras de snapshot a partir do snapshot mais recente da tabela.
- Leituras incrementais com base no ID do snapshot confirmado, quando habilitado.
- Poda de partições quando
use_paimon_partition_pruningestá habilitado. - Atualização opcional de metadados em segundo plano quando configurada.
- UUID estável da tabela ao usar bancos de dados Atomic/Replicated, permitindo macros
{uuid}em caminhos do Keeper.
Configurações
allow_experimental_paimon_storage_engine— habilita a criação dos motores de tabelaPaimon,PaimonS3,PaimonAzure,PaimonHDFSePaimonLocal. Padrão:0(desabilitado).paimon_incremental_read— habilita o modo de leitura incremental.paimon_metadata_refresh_interval_sec— intervalo, em segundos, da atualização de metadados em segundo plano. Quando definido como um valor maior que 0, uma tarefa em segundo plano busca periodicamente o snapshot e o esquema mais recentes no armazenamento de objetos. Padrão: 30.paimon_keeper_path— caminho do Keeper para o estado da leitura incremental. Deve ser definido e ser único por tabela; oferece suporte a macros como{database},{table},{uuid}.paimon_replica_name— nome da réplica para o estado da leitura incremental. Deve ser definido e ser único por réplica; oferece suporte a macros como{replica}.
Exemplos de leitura incremental
Configurações no nível da consulta para leitura incremental
SELECT ... SETTINGS, não em CREATE TABLE). Elas controlam o comportamento das leituras incrementais em cada consulta:
paimon_target_snapshot_id— lê apenas o delta do snapshot especificado. O watermark confirmado no Keeper não é avançado, portanto o mesmo snapshot pode ser relido quantas vezes for necessário. Padrão:-1(desabilitado).max_consume_snapshots— número máximo de snapshots a consumir em uma única leitura incremental. Quando a source acumula muitos snapshots não lidos, isso limita quantos são consumidos por consulta para controlar o tamanho do lote.0significa sem limite. Padrão:0.
Paimon para MergeTree por meio de view materializada atualizável
APPEND. Cada ciclo de atualização lê apenas novos dados incrementais do Paimon e os adiciona à tabela de destino.
Etapa 1 — Crie a tabela de origem do Paimon com leitura incremental e atualização de metadados habilitadas.
O exemplo abaixo usa PaimonLocal. Substitua o motor por PaimonS3, PaimonAzure, PaimonHDFS ou pelo alias Paimon, conforme apropriado para seu backend de armazenamento:
paimon_metadata_refresh_interval_sec define o intervalo, em segundos, de atualização de metadados em segundo plano. Quando é maior que 0, uma tarefa em segundo plano extrai periodicamente o snapshot e o esquema mais recentes do armazenamento de objetos, para que o ciclo de atualização da MV possa ver dados recém-confirmados sem esperar que uma consulta acione a atualização dos metadados. O padrão é 30. Use com cautela em muitas tabelas para evitar E/S excessiva no armazenamento de objetos e no Keeper.
Etapa 2 — Crie a tabela de destino MergeTree (esquema clonado da tabela Paimon):
SELECT * FROM paimon_mv_source, que retorna apenas as linhas adicionadas desde o último snapshot confirmado e as adiciona a paimon_mv_dest.
Limpeza:
Interrompa a MV antes de removê-la para evitar que a atualização em segundo plano impeça operações de DDL.
Limitações
- A leitura incremental requer que o Keeper (ZooKeeper) esteja configurado.
- A leitura incremental requer que
paimon_keeper_pathesteja definido e seja único para cada tabela. paimon_replica_namedeve ser único para cada réplica dentro do mesmo caminho do Keeper.- A leitura incremental usa entrega com garantia de, no máximo, uma vez: o snapshot confirmado avança quando os arquivos de dados são coletados, antes de os dados serem efetivamente consumidos. Se a consulta falhar após a coleta dos arquivos, os snapshots ignorados não serão lidos novamente em uma nova tentativa.
- O motor da tabela é somente leitura; a modificação de dados não é suportada.
- A leitura incremental não lida com exclusões de dados históricos na origem Paimon. Se os dados de upstream do Paimon forem excluídos ou atualizados, as linhas correspondentes já gravadas em uma tabela de destino MergeTree no ClickHouse não serão removidas automaticamente. Você deve executar manualmente
ALTER TABLE ... DELETEna tabela MergeTree para limpar dados desatualizados.
Aliases
Paimon agora é um alias de PaimonS3.
Colunas virtuais
_path— Caminho do arquivo. Tipo:LowCardinality(String)._file— Nome do arquivo. Tipo:LowCardinality(String)._size— Tamanho do arquivo em bytes. Tipo:Nullable(UInt64). Se o tamanho do arquivo for desconhecido, o valor seráNULL._time— Data e hora da última modificação do arquivo. Tipo:Nullable(DateTime). Se a data e hora forem desconhecidas, o valor seráNULL._etag— O etag do arquivo. Tipo:LowCardinality(String). Se o etag for desconhecido, o valor seráNULL.
Tipos de dados compatíveis
| Tipo de dado do Paimon | Tipo de dado do 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 |
Partições compatíveis
CHARVARCHARBOOLEANDECIMALTINYINTSMALLINTINTEGERDATETIMETIMESTAMPTIMESTAMP WITH LOCAL TIME ZONEBIGINTFLOATDOUBLE