Pular para o conteúdo principal

Use o recurso Apache Iceberg v3

info

Beta

Este recurso está em versão Beta.

Esta página descreve como usar o recurso Apache Iceberg v3 com Unity Catalog. Iceberg v3 aprimora o desempenho da consulta e introduz um novo recurso para gerenciar tabelas Delta Lake com UniForm, gerenciar tabelas Iceberg e tabelas Iceberg estrangeiras.

Os key recursos do Iceberg v3 são:

  • Vetores de exclusão : Permitem exclusões eficientes em nível de linha sem a necessidade de reescrever arquivos de dados inteiros.
  • Tipo de dados VARIANT : Suporta o armazenamento e processamento de dados semiestruturados.
  • Linhagem de linhas : rastreia as alterações incrementais nos dados da tabela.

A linhagem de linhas é obrigatória para todas as tabelas do Iceberg v3. Não existe nenhum comando para ativar ou desativar a linhagem de linhas.

Requisitos

Para usar o recurso Iceberg v3, você deve atender aos seguintes requisitos:

  • Um workspace com Unity Catalog ativado.
  • Para ler e gravar em tabelas gerenciadas com Iceberg v3, é Databricks Runtime 17.3 ou superior.

Crie uma nova tabela com o Iceberg v3

Crie novas tabelas com Iceberg v3 ativado para gerenciar tabelas Delta com UniForm e tabelas Iceberg .

Para criar uma nova tabela Delta de gerenciamento com UniForm e Iceberg v3 habilitados, use o seguinte comando SQL :

SQL
CREATE OR REPLACE TABLE main.schema.table (c1 INT) TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'iceberg',
'delta.enableIcebergCompatV3' = 'true'
);

Para obter mais informações sobre UniForm, consulte Ler tabelas Delta com clientes Iceberg.

Atualize uma tabela existente para Iceberg v3.

Você pode atualizar uma tabela existente para o Iceberg v3 da seguinte forma:

  1. Habilitar qualquer recurso da versão 3 em uma tabela.
  2. Definindo a versão do formato Iceberg em uma tabela para 3 (mostrada abaixo).
atenção

Gerenciar As tabelas Iceberg atualizadas para a versão 3 não podem ser revertidas para a versão anterior. Gerenciar Tabelas Delta com UniForm podem ser rebaixadas com segurança.

Para atualizar uma tabela Delta de gerenciamento com UniForm para a versão 3, use o seguinte comando:

SQL
ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.enableIcebergCompatV2' = 'false'
);

Habilitar vetores de exclusão

Os vetores de exclusão otimizam as operações de modificação de dados em nível de linha e estão ativados por default em todas as novas tabelas Iceberg v3. Veja O que são vetores de deleção?.

nota

Habilitar vetores de exclusão em uma tabela Iceberg existente atualiza a versão do formato Iceberg para 3.

Para criar uma nova tabela Delta de gerenciamento com UniForm, Iceberg v3 e vetores de exclusão habilitados, defina as seguintes propriedades da tabela:

SQL
CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
'delta.enableDeletionVectors' = 'true',
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);

Use o tipo de dados VARIANT.

O tipo de dados VARIANT permite armazenar e consultar dados semiestruturados.

nota

Usar VARIANT em uma tabela Iceberg existente atualiza a versão do formato Iceberg para 3.

Para criar uma nova tabela Delta gerencial com UniForm e uma coluna VARIANT:

SQL
CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);

Para adicionar uma coluna VARIANT a uma tabela existente, use o comando ALTER TABLE :

SQL
ALTER TABLE catalog.schema.table ADD COLUMN variant_col VARIANT;

Restaurar uma tabela para uma versão anterior.

Se você precisar reverter uma tabela para um estado anterior à atualização para o Iceberg v3, você pode usar o comando RESTORE .

SQL
RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;

Limitações

O Databricks é compatível com a versão 3 da especificação Iceberg, com as seguintes exceções:

  • Os valores padrão, incluindo os valores padrão de gravação e os valores padrão iniciais, não são suportados.

  • Os seguintes tipos de dados não são suportados:

    • Tipos geoespaciais
    • Tipo desconhecido
    • Carimbo de data/hora com precisão de nanossegundos.
  • Transformações com múltiplos argumentos não são suportadas.