Partilhar via


Use os recursos do Apache Iceberg v3

Importante

Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

Esta página descreve como usar os recursos do Apache Iceberg v3 com o Unity Catalog. O Iceberg v3 melhora o desempenho da consulta e introduz novos recursos para tabelas Delta Lake gerenciadas com UniForm, tabelas Iceberg gerenciadas e tabelas Iceberg estrangeiras.

As principais características do Iceberg v3 são:

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

A linhagem de linha é necessária para todas as tabelas Iceberg v3. Não há nenhum comando para ativar ou desativar a linhagem de linha.

Requerimentos

Para usar os recursos do Iceberg v3, você deve atender aos seguintes requisitos:

  • Um espaço de trabalho com o Unity Catalog ativado
  • Databricks Runtime 17.3 ou superior para ler e gravar em tabelas gerenciadas com o Iceberg v3

Criar uma nova tabela com o Iceberg v3

Crie novas tabelas com o Iceberg v3 habilitado para tabelas Delta gerenciadas com UniForm e tabelas Iceberg gerenciadas.

Tabela Delta gerenciada com UniForm

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

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

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

Mesa Iceberg Gerenciada

Para criar uma nova tabela Iceberg gerenciada com o formato v3, use o seguinte comando SQL:

CREATE OR REPLACE TABLE main.schema.table (c1 INT)
USING iceberg
TBLPROPERTIES ('format-version' = 3);

Para obter mais informações sobre tabelas Iceberg gerenciadas, consulte O que é Apache Iceberg no Azure Databricks?.

Atualizar uma tabela existente para o Iceberg v3

Você pode atualizar uma tabela existente para o Iceberg v3 ao:

  1. Ativar qualquer recurso v3 numa tabela.
  2. Configurar a versão do formato Iceberg numa tabela para 3 (conforme mostrado abaixo).

Advertência

As tabelas Iceberg gerenciadas que são atualizadas para v3 não podem ser rebaixadas. As tabelas Delta gerenciadas com UniForm podem ser rebaixadas com segurança.

Tabela Delta gerenciada com UniForm

Para atualizar uma tabela Delta gerenciada com UniForm para v3, use o seguinte comando:

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

Mesa Iceberg Gerenciada

Para atualizar uma tabela Iceberg gerenciada para v3, use o seguinte comando:

ALTER TABLE catalog.schema.table SET TBLPROPERTIES (
  'format-version' = 3
);

Habilitar vetores de exclusão

Os vetores de exclusão otimizam as operações de modificação de dados no nível da linha e são habilitados por padrão em todas as novas tabelas do Iceberg v3. Ver Vetores de eliminação em Databricks.

Observação

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

Tabela Delta gerenciada com UniForm

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

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

Mesa Iceberg Gerenciada

Para criar uma nova tabela gerida pelo Iceberg com vetores de exclusão ativados, defina a iceberg.enableDeletionVectors propriedade table:

CREATE TABLE catalog.schema.table (c1 INT)
USING ICEBERG TBLPROPERTIES (
  'iceberg.enableDeletionVectors' = 'true'
);

Use o tipo de dados VARIANT

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

Observação

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

Tabela Delta gerenciada com UniForm

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

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

Mesa Iceberg Gerenciada

Para criar uma nova tabela Iceberg gerida com uma coluna VARIANT:

CREATE TABLE catalog.schema.icebergTable (col VARIANT) USING iceberg;

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

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 antes de ela ser atualizada para o Iceberg v3, você pode usar o RESTORE comando.

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

Limitações

O Azure Databricks dá suporte à versão 3 da especificação Iceberg, com as seguintes exceções:

  • Não há suporte para padrões, incluindo padrões de gravação e padrões iniciais.
  • Os seguintes tipos de dados não são suportados:
    • Tipos geoespaciais
    • Tipo desconhecido
    • Carimbo de hora com precisão de nanossegundo.
  • Não há suporte para transformações de vários argumentos.