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