Pular para o conteúdo principal

Leia as tabelas do Delta com os clientes da Iceberg

Este artigo fornece detalhes para permitir leituras em Iceberg em tabelas armazenadas com Delta Lake em Databricks. Este recurso requer Databricks Runtime 14.3 LTS ou acima.

nota

Essa funcionalidade era chamada anteriormente de Delta Lake Universal Format (UniForm).

O senhor pode configurar uma conexão externa para que o Unity Catalog atue como um catálogo Iceberg. Consulte Ler tabelas do Databricks de clientes do Iceberg.

Como funcionam as leituras Iceberg (UniForm)?

Tanto o Delta Lake quanto o Iceberg consistem em arquivos de dados Parquet e uma camada de metadados. A ativação das leituras do Iceberg configura suas tabelas para gerar automaticamente metadados do Iceberg de forma assíncrona, sem reescrever dados, para que os clientes do Iceberg possam ler tabelas Delta gravadas pela Databricks. Uma única cópia dos arquivos de dados atende a vários formatos.

important
  • As tabelas com leituras Iceberg ativadas usam o Zstandard em vez do Snappy como codec de compactação para arquivos de dados Parquet subjacentes.
  • Iceberg A geração de metadados é executada de forma assíncrona no site compute usado para gravar dados nas tabelas Delta, o que pode aumentar o uso do recurso do driver.
  • Para obter a documentação do recurso de tabela do UniForm legado IcebergCompatV1, consulte Legacy UniForm IcebergCompatV1.

Requisitos

Para ativar as leituras do Iceberg, os seguintes requisitos devem ser atendidos:

nota

O senhor não pode ativar vetores de exclusão em uma tabela com leituras Iceberg ativadas.

Use REORG para desativar e limpar os vetores de exclusão enquanto ativa as leituras do Iceberg em uma tabela existente com vetores de exclusão ativados. Consulte Ativar ou atualizar o suporte de leitura do Iceberg usando REORG.

Habilitar leituras em Iceberg (UniForm)

important

Quando o senhor ativa as leituras do Iceberg, o recurso de protocolo de gravação IcebergCompatV2 é adicionado à tabela. Somente os clientes que suportam esse recurso de tabela podem gravar em tabelas com leituras Iceberg ativadas. Em Databricks, o senhor deve usar Databricks Runtime 14.3 LTS ou acima para gravar em tabelas habilitadas.

IcebergCompatV2 depende do mapeamento da coluna. Uma vez que IcebergCompatV2 esteja ativado para uma tabela, o senhor não pode abandonar o recurso de tabela columnMapping.

O senhor pode desativar as leituras do Iceberg desmarcando a propriedade da tabela delta.universalFormat.enabledFormats. As atualizações para as versões de protocolo do leitor e gravador Delta Lake não podem ser desfeitas.

O senhor deve definir as seguintes propriedades da tabela para ativar as leituras do Iceberg:

'delta.enableIcebergCompatV2' = 'true'
'delta.universalFormat.enabledFormats' = 'iceberg'

Quando o senhor habilita as leituras do Iceberg pela primeira vez, começa a geração assíncrona de metadados. Essa tarefa deve ser concluída antes que clientes externos possam consultar a tabela usando o Iceberg. Consulte Verificar o status de geração de metadados do Iceberg.

Para obter uma lista de limitações, consulte Limitações.

Habilitar leituras do Iceberg durante a criação da tabela

O mapeamento de colunas deve ser ativado para usar as leituras do Iceberg e não pode ser abandonado depois de ativado. Isso acontece automaticamente se o senhor ativar as leituras do Iceberg durante a criação da tabela, como no exemplo a seguir:

SQL
CREATE TABLE T(c1 INT) TBLPROPERTIES(
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');

Habilitar leituras Iceberg em uma tabela existente

No Databricks Runtime 15.4 LTS e acima, o senhor pode ativar ou atualizar as leituras do Iceberg em uma tabela existente usando a seguinte sintaxe:

SQL
ALTER TABLE table_name SET TBLPROPERTIES(
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');

Habilite ou atualize o suporte à leitura do Iceberg usando REORG

O senhor pode usar o site REORG para ativar as leituras do Iceberg e reescrever os arquivos de dados subjacentes, como no exemplo a seguir:

SQL
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));

Use REORG se alguma das seguintes afirmações for verdadeira:

  • Sua tabela tem vetores de exclusão habilitados.
  • O senhor ativou anteriormente a versão IcebergCompatV1 do UniForm Iceberg.
  • O senhor precisa ler de mecanismos do Iceberg que não suportam arquivos Parquet no estilo Hive, como o Athena ou o Redshift.

Quando ocorre a geração de metadados do Iceberg?

O Databricks aciona a geração de metadados de forma assíncrona após a conclusão de uma transação de gravação do Delta Lake. Esse processo de geração de metadados usa o mesmo compute que concluiu a transação Delta.

nota

O senhor também pode acionar manualmente a geração de metadados do Iceberg. Consulte Acionar manualmente a conversão de metadados do Iceberg.

Para evitar latências de gravação associadas à geração de metadados, as tabelas Delta com commit frequente podem agrupar vários Delta commit em um único commit para Iceberg metadados.

Delta Lake garante que apenas um processo de geração de metadados esteja em andamento em um determinado recurso compute. commit que acionaria um segundo processo de geração de metadados concorrente com êxito commit a Delta, mas não acionaria a geração assíncrona de metadados Iceberg. Isso evita a latência em cascata para a geração de metadados para cargas de trabalho com confirmação frequente (segundos a minutos entre confirmações).

Veja as versões de tabela Delta e Iceberg.

Versões de mesa Delta e Iceberg

Delta Lake e Iceberg permitem consultas de viagem do tempo usando versões de tabela ou registros de data e hora armazenados nos metadados da tabela.

Em geral, as versões da tabela Delta não se alinham às versões do Iceberg pelo carimbo de data/hora do commit ou pelo ID da versão. Para verificar a qual versão de uma tabela Delta corresponde uma determinada versão de uma tabela Iceberg, o senhor pode usar as propriedades da tabela correspondente. Consulte Verificar o status de geração de metadados do Iceberg.

Verificar o status da geração de metadados do Iceberg

A ativação de leituras do Iceberg em uma tabela adiciona os seguintes campos aos metadados do Unity Catalog e da tabela do Iceberg para rastrear o status da geração de metadados:

Campo de metadados

Descrição

converted_delta_version

A versão mais recente da tabela Delta para a qual os metadados do Iceberg foram gerados com sucesso.

converted_delta_timestamp

O registro de data e hora do último commit do Delta para o qual os metadados do Iceberg foram gerados com sucesso.

No Databricks, o senhor pode revisar esses campos de metadados seguindo um dos seguintes procedimentos:

  • Revisando a seção Delta Uniform Iceberg retornada por DESCRIBE EXTENDED table_name.
  • Revisão dos metadados da tabela com o Catalog Explorer.
  • Usando a API REST para obter uma tabela.

Consulte a documentação do seu cliente Iceberg Reader para saber como revisar as propriedades da tabela fora do Databricks. Para o OSS Apache Spark, o senhor pode ver essas propriedades usando a seguinte sintaxe:

SQL
SHOW TBLPROPERTIES <table-name>;

Acionar manualmente a conversão de metadados do Iceberg

O senhor pode acionar manualmente a geração de metadados do Iceberg para a versão mais recente da tabela Delta. Essa operação é executada de forma síncrona, o que significa que, quando for concluída, o conteúdo da tabela disponível em Iceberg refletirá a versão mais recente da tabela Delta disponível quando o processo de conversão começar.

Essas operações não devem ser necessárias em condições normais, mas podem ajudar se o senhor encontrar o seguinte:

  • Um clustering é encerrado antes que a geração automática de metadados seja bem-sucedida.
  • Um erro ou falha no trabalho interrompe a geração de metadados.
  • Um cliente que não suporta a geração de metadados do UniForm Iceberg grava na tabela Delta.

Use a seguinte sintaxe para acionar manualmente a geração de metadados do Iceberg:

SQL
MSCK REPAIR TABLE <table-name> SYNC METADATA

Veja a TABELA DE REPARO.

Ler o Iceberg usando um caminho JSON de metadados

Alguns clientes do Iceberg exigem que o senhor forneça um caminho para arquivos de metadados versionados para registrar tabelas externas do Iceberg. Sempre que a Databricks converte uma nova versão da tabela Delta para o Iceberg, ela cria um novo arquivo JSON de metadados.

Os clientes que usam caminhos JSON de metadados para configurar o Iceberg incluem o BigQuery. Consulte a documentação do cliente leitor Iceberg para obter detalhes sobre a configuração.

O Delta Lake armazena metadados do Iceberg no diretório da tabela usando o seguinte padrão:

<table-path>/metadata/<version-number>-<uuid>.metadata.json

No Databricks, o senhor pode revisar esse local de metadados executando uma das seguintes ações:

  • Revisando a seção Delta Uniform Iceberg retornada por DESCRIBE EXTENDED table_name.
  • Revisão dos metadados da tabela com o Catalog Explorer.
  • Usando o seguinte comando com a API REST:
GET api/2.1/unity-catalog/tables/<catalog-name>.<schame-name>.<table-name>

A resposta inclui as seguintes informações:

{
...
"delta_uniform_iceberg": {
"metadata_location": "<cloud-storage-uri>/metadata/v<version-number>-<uuid>.metadata.json"
}
}
important

Os clientes do leitor Iceberg baseados em caminhos podem exigir a atualização manual e a renovação dos caminhos JSON dos metadados para ler as versões atuais das tabelas. Os usuários podem encontrar erros ao consultar tabelas Iceberg usando versões desatualizadas, pois os arquivos de dados Parquet são removidos da tabela Delta com VACUUM.

Limitações

As seguintes limitações existem para todas as tabelas com leituras Iceberg ativadas:

  • As leituras Iceberg não funcionam em tabelas com vetores de exclusão ativados. Consulte O que são vetores de exclusão? .
  • Delta As tabelas com Iceberg reads habilitadas não são compatíveis com os tipos VOID.
  • O suporte ao cliente Iceberg é somente leitura. As gravações não são suportadas.
  • Os clientes de leitura do Iceberg podem ter limitações individuais, independentemente do suporte do Databricks para leituras do Iceberg. Consulte a documentação do cliente escolhido.
  • Os destinatários de Delta Sharing só podem ler a tabela como Delta, mesmo quando as leituras de Iceberg estiverem habilitadas.
  • Alguns recursos da tabela Delta Lake usados por leituras Iceberg não são suportados por alguns clientes leitores Delta Sharing. Consulte O que é Delta Sharing?

O Change Data Feed funciona para clientes Delta quando as leituras do Iceberg estão ativadas, mas não tem suporte no Iceberg.