Use o recurso Apache Iceberg v3
O Apache Iceberg v3 aprimora o desempenho de query e introduz novos recursos para tabelas gerenciadas usando Iceberg ou Delta Lake com leituras Iceberg no Unity Catalog.
Os key recursos do Iceberg v3 são:
- Vetores de exclusão : ativam exclusões eficientes em nível de linha sem reescrever arquivos de dados inteiros. Consulte Vetores de exclusão no Databricks.
- Tipo de dados VARIANT : oferece suporte para armazenar e processar dados semiestruturados. Consulte Suporte para tipo variante para Apache Iceberg e Delta Lake.
- Linhagem da linha : rastreia alterações incrementais nos dados da tabela. Consulte Acompanhamento de linha no Databricks.
Requisitos
Para usar tabelas gerenciadas com recursos do Iceberg v3, como tipos geoespaciais, você deve atender aos seguintes requisitos:
- Um workspace com o Unity Catalog habilitado.
- Databricks Runtime 18 LTS e acima.
Crie uma nova tabela com o Iceberg v3
Crie novas tabelas com o Iceberg v3 habilitado tanto para tabelas Delta Lake gerenciadas com leituras Iceberg quanto para tabelas Iceberg gerenciadas.
- Delta Lake with Iceberg reads
- Iceberg
Para criar uma nova tabela gerenciada usando Delta Lake com leituras Iceberg e Iceberg v3 ativados, 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 leituras do Iceberg, consulte Ler tabelas Delta Lake com clientes Iceberg.
Para criar uma nova tabela gerenciada usando Iceberg 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, consulte O que é o Apache Iceberg no 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).
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.
- Delta Lake with Iceberg reads
- Iceberg
Para atualizar uma tabela gerenciada usando Delta Lake com leituras de Iceberg para a v3, use o seguinte comando:
ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.enableIcebergCompatV2' = 'false'
);
Para atualizar uma tabela gerenciada usando o Iceberg para a versão 3, utilize 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. Consulte Vetores de exclusão no Databricks.
Habilitar vetores de exclusão em uma tabela Iceberg existente atualiza a versão do formato Iceberg para 3.
- Delta Lake with Iceberg reads
- Iceberg
Para criar uma nova tabela gerenciada usando Delta Lake com leituras Iceberg, Iceberg v3 e vetores de exclusão ativados, defina as seguintes propriedades de tabela:
CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
'delta.enableDeletionVectors' = 'true',
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Para criar uma nova tabela gerenciada usando Iceberg v3 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.
- Delta Lake with Iceberg reads
- Iceberg
Para criar uma nova tabela gerenciada usando Delta Lake com leituras Iceberg e uma coluna VARIANT:
CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Para criar uma nova tabela gerenciada usando Iceberg v3 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;
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 .
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.