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.
Observação
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.
Importante
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 UniForm
IcebergCompatV1
legado, consulte Legacy UniForm IcebergCompatV1.
Requisitos
Para ativar as leituras do Iceberg, os seguintes requisitos devem ser atendidos:
A tabela Delta deve ser registrada no Unity Catalog. Ambas as tabelas gerenciais e externas são suportadas.
A tabela deve ter o mapeamento de colunas ativado. Consulte Renomear e soltar colunas com o mapeamento de colunas do Delta Lake.
A tabela Delta deve ter um
minReaderVersion
>= 2 eminWriterVersion
>= 7. Consulte Como o Databricks gerencia a compatibilidade de recursos do Delta Lake?.As gravações na tabela devem usar o Databricks Runtime 14.3 LTS ou acima.
Observação
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 o REORG.
Habilitar leituras em Iceberg (UniForm)
Importante
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.
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.
Ativar leituras do Iceberg durante a criação da tabela
O mapeamento de colunas deve estar ativado para usar as leituras do Iceberg. Isso acontece automaticamente se o senhor ativar as leituras do Iceberg durante a criação da tabela, como no exemplo a seguir:
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:
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:
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 ativados.
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.
Observação
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).
Consulte as versões das mesas 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.
Verifique o status de 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 |
---|---|
|
A versão mais recente da tabela Delta para a qual os metadados do Iceberg foram gerados com sucesso. |
|
O carimbo de data/hora do último commit 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 porDESCRIBE 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 cliente do leitor Iceberg para saber como revisar as propriedades da tabela fora do Databricks. Para OSS Apache Spark, você pode ver essas propriedades usando a seguinte sintaxe:
SHOW TBLPROPERTIES <table-name>;
Acione manualmente a conversão de metadados do Iceberg
Você pode acionar manualmente a geração de metadados do Iceberg para a versão mais recente da tabela Delta. Esta execução é executada de forma síncrona, ou seja, quando ela for concluída, o conteúdo da tabela disponível no 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 você encontrar o seguinte:
Um clusters termina antes que a geração automática de metadados seja bem-sucedida.
Um erro ou falha Job 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:
MSCK REPAIR TABLE <table-name> SYNC METADATA
Consulte TABELA DE REPAROS.
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 do leitor Iceberg para obter detalhes de configuração.
O Delta Lake armazena os 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 porDESCRIBE 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 a seguinte informação:
{
...
"delta_uniform_iceberg": {
"metadata_location": "<cloud-storage-uri>/metadata/v<version-number>-<uuid>.metadata.json"
}
}
Importante
Os clientes de leitura Iceberg baseados em caminho podem exigir a atualização manual e a atualização de caminhos JSON de metadados para ler as versões atuais da tabela. 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.