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).use_paimon_metadata_files_cache— habilita o cache de arquivos de metadados do Paimon (armazena em cache listas de manifest e manifests desserializados). Defina como1para habilitar e0para desabilitar. Padrão:0. A forma como essa configuração entra em vigor difere entre table functions e motores de tabela persistentes — veja a observação abaixo.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}.
Ciclo de vida de
use_paimon_metadata_files_cacheA forma como use_paimon_metadata_files_cache é aplicado depende de como a tabela Paimon é acessada:- Funções de tabela (por exemplo,
SELECT ... FROM paimonS3(...)): a decisão de usar o cache é avaliada por consulta, portanto você pode passarSETTINGS use_paimon_metadata_files_cache = 1diretamente noSELECT. - Motores de tabela persistentes (
PaimonS3,PaimonAzure,PaimonHDFS,PaimonLocale o aliasPaimon): a decisão de usar o cache é fixada uma única vez quando os metadados da tabela são inicializados e armazenada em componentes persistentes imutáveis; o caminho de atualização de metadados deliberadamente não relê essa configuração. Portanto, passarSETTINGS use_paimon_metadata_files_cache = 1em umSELECTsobre uma tabela persistente já inicializada não tem efeito — a decisão fixada anteriormente continua sendo usada. Para alterá-la, definause_paimon_metadata_files_cacheantes da inicialização dos metadados da tabela ou executeDROPe recrie a tabela comCREATEusando o valor desejado.
paimon_metadata_files_cache_size) não é fixada: é uma configuração de runtime que pode ser alterada por meio de SYSTEM RELOAD CONFIG e entra em vigor imediatamente, mesmo para tabelas já inicializadas.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 motor Paimon com detecção automática, 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 de 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. - Se a tabela Paimon subjacente for removida e recriada no mesmo caminho de armazenamento de objetos (por exemplo, via Flink ou Spark), você deverá executar
DROPeCREATEnovamente na tabela ClickHouse correspondente. O ClickHouse detecta a recriação comparando o timestamp de criação do schema-0 e gera um erro; a tabela ClickHouse desatualizada não poderá ser usada até ser recriada.
Aliases
Paimon motor de tabela detecta automaticamente o backend de armazenamento com base na configuração disk e direciona para PaimonS3, PaimonAzure ou PaimonLocal, conforme o caso. Quando nenhum disk é especificado, a implementação padrão é 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
Partições compatíveis
CHARVARCHARBOOLEANDECIMALTINYINTSMALLINTINTEGERDATETIMETIMESTAMPTIMESTAMP WITH LOCAL TIME ZONEBIGINTFLOATDOUBLE