Use o recurso Apache Iceberg v3
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 .
- Managed Delta table with UniForm
- Managed Iceberg table
Para criar uma nova tabela Delta de gerenciamento 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 UniForm, consulte Ler tabelas Delta com clientes Iceberg.
Para criar uma nova tabela de gerenciamento Iceberg com o formato v3, utilize o seguinte comando SQL :
CREATE OR REPLACE TABLE main.schema.table (c1 INT)
USING iceberg
TBLPROPERTIES ('format-version' = 3);
Para mais informações sobre gerenciamento de tabelas Iceberg , veja O que é Apache Iceberg em Databricks?.
Atualize uma tabela existente para Iceberg v3.
Você pode atualizar uma tabela existente para o Iceberg v3 da seguinte forma:
- Habilitar qualquer recurso da versão 3 em uma tabela.
- Definindo a versão do formato Iceberg em uma tabela para 3 (mostrada abaixo).
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.
- Managed Delta table with UniForm
- Managed Iceberg table
Para atualizar uma tabela Delta de gerenciamento com UniForm para a versão 3, use o seguinte comando:
ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.enableIcebergCompatV2' = 'false'
);
Para atualizar uma tabela Iceberg de gerenciamento para a versão 3, 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 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?.
Habilitar vetores de exclusão em uma tabela Iceberg existente atualiza a versão do formato Iceberg para 3.
- Managed Delta table with UniForm
- Managed Iceberg table
Para criar uma nova tabela Delta de gerenciamento 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'
);
Para criar uma nova tabela Iceberg de gerenciamento com vetores de exclusão ativados, defina a propriedade da tabela iceberg.enableDeletionVectors :
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.
Usar VARIANT em uma tabela Iceberg existente atualiza a versão do formato Iceberg para 3.
- Managed Delta table with UniForm
- Managed Iceberg table
Para criar uma nova tabela Delta gerencial com UniForm e uma coluna VARIANT:
CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Para criar uma nova tabela Iceberg gerencial com uma coluna VARIANT:
CREATE TABLE catalog.schema.icebergTable (col VARIANT) USING iceberg;
Para adicionar uma coluna VARIANT a uma tabela existente, use o comando ALTER TABLE :
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 .
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.