Parquet v2

Disponível no Databricks Runtime 18.1 e em versões posteriores, o Parquet v2 melhora o desempenho das consultas e reduz o espaço de armazenamento das tabelas Delta Lake e Apache Iceberg através da utilização de codificações avançadas, cabeçalhos de página de dados v2 e marcas temporais INT64.

Como funciona o Parquet v2

O Parquet v2 introduz melhorias no formato de ficheiro de dados que reduzem o armazenamento e melhoram o desempenho de leitura:

  • Codificações avançadas: Colunas inteiras e de strings usam novas codificações com compressão e descodificação mais eficientes em comparação com as codificações usadas no Parquet v1.
  • Cabeçalhos de página de dados V2: Estatísticas e índices ao nível da página melhoram o pushdown de predicados e o salto de dados, reduzindo a quantidade de dados digitalizados no momento da consulta.
  • Marcas temporais INT64: INT64 as marcas temporais substituem a antiga INT96 marca temporal, melhorando as estatísticas das colunas e a codificação e compressão das marcas temporais.

Ativar o Parquet v2

O Azure Databricks atualiza automaticamente tabelas geridas compatíveis com o Unity Catalog para Parquet v2. Consulte atualizações automáticas.

Para ativar manualmente o Parquet v2, defina a propriedade da tabela parquet.format.version para 2.12.0, utilizando o prefixo apropriado para o seu tipo de tabela. Antes de ativar manualmente, reveja as limitações.

Para ativar o Parquet v2 numa tabela existente:

Lago Delta

ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.parquet.format.version' = '2.12.0');

Iceberg

ALTER TABLE <table_name> SET TBLPROPERTIES ('iceberg.parquet.format.version' = '2.12.0');

Para ativar o Parquet v2 numa nova mesa:

Lago Delta

CREATE TABLE <table_name> (...)
TBLPROPERTIES ('delta.parquet.format.version' = '2.12.0');

Iceberg

CREATE TABLE <table_name> (...)
USING iceberg
TBLPROPERTIES ('iceberg.parquet.format.version' = '2.12.0');

Depois de definir a propriedade, todas as escritas subsequentes usam codificações v2. Os ficheiros Parquet v1 e v2 podem coexistir na mesma tabela. Os ficheiros de dados existentes não são reescritos automaticamente. Nas tabelas Delta Lake, para reescrever ficheiros existentes para v2, use REORG TABLE no Databricks Runtime 18.2 e versões posteriores:

REORG TABLE <table_name> APPLY (SET PARQUET (FORMAT_VERSION = '2.12.0'));

Consulte a referência das propriedades da tabela para a referência completa das propriedades da tabela.

Voltar ao Parquet v1

No Databricks Runtime 18.2 e posterior, para reverter uma tabela específica para a codificação v1, execute REORG TABLE com a opção SET PARQUET:

REORG TABLE <table_name> APPLY (SET PARQUET (FORMAT_VERSION = '1.0.0'));

Este comando reescreve todos os ficheiros de dados usando codificações v1 e redefine a delta.parquet.format.version propriedade da tabela para 1.0.0.

Consulte REORG TABLE para obter a sintaxe completa REORG TABLE.

Limitações

O parquet v2 apresenta as seguintes limitações:

  • No caso dos motores externos, alguns leitores do Apache Iceberg poderão não suportar o Parquet v2 para tabelas Iceberg. Deve verificar se os leitores do Iceberg são compatíveis antes de ativar o Parquet v2 nas tabelas Iceberg.
  • Para o OpenSharing, antes de ativar o Parquet v2, verifique se os clientes leitores dos destinatários do OpenSharing suportam codificações Parquet v2.
  • As visualizações materializadas e as tabelas de streaming não são automaticamente atualizadas para Parquet v2. Pode ativar manualmente o Parquet v2 nestes tipos de tabelas no Databricks Runtime 18.1 e versões posteriores.