Pular para o conteúdo principal

Use o recurso Apache Iceberg v3

Apache Iceberg v3 aprimora o desempenho de consultas e introduz novos recursos para tabelas gerenciadas usando Iceberg ou Delta Lake com UniForm no Unity Catalog.

Os key recursos do Iceberg v3 são:

Requisitos

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

  • Um workspace com o Unity Catalog habilitado.
  • Databricks Runtime 18.0 ou acima para ler e gravar em tabelas gerenciadas com Iceberg v3.
  • Databricks Runtime 18.2 ou acima para usar tipos geoespaciais com Iceberg v3.

Crie uma nova tabela com o Iceberg v3

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

Para criar uma nova tabela gerenciada usando Delta Lake com UniForm e Iceberg v3 ativados, 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 o UniForm, consulte Ler tabelas do Delta Lake com clientes Iceberg usando o UniForm.

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).
info

As tabelas podem ser rebaixadas da versão 3 para a versão 2 restaurando a tabela para uma versão anterior à atualização para a versão 3 usando RESTORE. Consulte Fazer downgrade de uma tabela para uma versão anterior.

Para atualizar uma tabela gerenciada usando Delta Lake com UniForm para v3, 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. Consulte Vetores de exclusão no Databricks.

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 gerenciada usando Delta Lake com UniForm, Iceberg v3 e vetores de exclusão ativados, 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 gerenciada usando Delta Lake 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;

Reverter uma tabela para uma versão anterior do Apache Iceberg.

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

SQL
set spark.databricks.delta.restore.protocolDowngradeAllowed = true;
RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;
set spark.databricks.delta.restore.protocolDowngradeAllowed = false;

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:

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