Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Apache Iceberg é um formato de tabela de software livre para cargas de trabalho de análise que dá suporte a recursos como evolução do esquema, viagem no tempo e particionamento oculto. Assim como o Delta Lake, o Iceberg cria uma camada de abstração que permite transações ACID sobre seus dados no armazenamento de objetos.
Azure Databricks dá suporte a tabelas Iceberg que usam o formato de arquivo Apache Parquet e as versões 1, 2 e 3 da especificação iceberg. Iceberg mantém a atomicidade e a consistência escrevendo novos arquivos de metadados para cada alteração de tabela. Todas as tabelas Iceberg no Azure Databricks seguem a especificação do formato de tabela Iceberg aberta. Consulte a especificação da tabela Iceberg.
Um catálogo de Iceberg é a camada de nível superior da arquitetura da tabela Iceberg que retorna os metadados atuais ao carregar uma tabela. O catálogo do Iceberg lida com operações como criar, remover e renomear tabelas.
Azure Databricks dá suporte a tabelas iceberg gerenciadas por:
- Catálogo do Unity
- Catálogos estrangeiros, como AWS Glue, metastore do Hive ou Snowflake Horizon Catalog
Requisitos
Para usar tabelas gerenciadas ou estrangeiras do Apache Iceberg, você deve atender aos seguintes requisitos:
- Use um espaço de trabalho com o Unity Catalog habilitado.
- Use o Databricks Runtime 16.4 LTS ou superior.
Para tabelas gerenciadas, você também deve atender ao seguinte requisito:
- Um espaço de trabalho com processamento sem servidor habilitado
Azure Databricks usa computação sem servidor para manter metadados da tabela Iceberg para tabelas gerenciadas. A computação sem servidor deve ter conectividade de rede com a conta de armazenamento em nuvem que faz backup da tabela. Se um firewall proteger a conta de armazenamento, configure a conectividade de rede sem servidor para que a computação sem servidor possa alcançá-la. A configuração necessária depende da nuvem. Para obter mais informações, consulte rede de plano de computação sem servidor.
Criar tabelas do Iceberg no Catálogo do Unity
As tabelas Iceberg que você cria no Unity Catalog são tabelas Iceberg gerenciadas. Você pode criar estas tabelas usando:
- Databricks Runtime ou SQL do Databricks
- Mecanismos externos compatíveis com Iceberg que dão suporte à API do Catálogo REST do Iceberg, como Apache Spark, Flink, Trino ou Kafka. Consulte as tabelas do Azure Databricks a partir de clientes do Apache Iceberg.
As tabelas iceberg gerenciadas são totalmente integradas aos recursos da plataforma Azure Databricks:
- O Catálogo Unity gerencia tarefas do ciclo de vida, como expiração de snapshots e compactação de arquivos nessas tabelas.
- O Liquid clustering melhora o desempenho da consulta.
- A otimização preditiva automatiza as operações para reduzir os custos de armazenamento e melhorar a velocidade da consulta.
- as exibições materializadas dão suporte à atualização incremental para manter os resultados atualizados à medida que os dados de origem são alterados.
- As tabelas de streaming dão suporte ao carregamento de dados incrementais do Kafka e do armazenamento de objetos de nuvem usando o DATAbricks SQL.
O Databricks recomenda usar o cliente Iceberg versão 1.9.2 e superior para ler e gravar no Catálogo do Unity.
Ler tabelas Iceberg gerenciadas por outros catálogos
Uma tabela Iceberg externa é uma tabela Iceberg gerenciada por um catálogo fora do Catálogo Unity. O catálogo externo armazena os metadados atuais da tabela. Azure Databricks usa Lakehouse Federation para recuperar metadados e ler a tabela do armazenamento de objetos.
As tabelas do Iceberg Estrangeiro são somente leitura no Azure Databricks e têm suporte limitado pela plataforma.
Acessar tabelas Iceberg usando sistemas externos
Você pode acessar todas as tabelas do Iceberg no Catálogo do Unity usando a API do Catálogo REST do Iceberg. Essa API aberta dá suporte a operações de leitura e gravação de mecanismos externos do Iceberg em diferentes linguagens e plataformas. Consulte as tabelas do Azure Databricks a partir de clientes do Apache Iceberg.
O Catálogo REST dá suporte à venda automática de credenciais, que fornece credenciais temporárias para mecanismos externos para acessar o armazenamento subjacente. Para obter mais informações, consulte Fornecimento de credenciais do Catálogo do Unity para acesso a sistemas externos.
Aviso
Não há suporte para venda automática de credenciais em workspaces que usam o armazenamento padrão. Confira Limitações.
Clonar tabelas de Iceberg gerenciadas
Você pode criar uma cópia completa e independente de uma tabela Iceberg gerenciada usando DEEP CLONE. Um clone profundo copia os arquivos de dados e os metadados da tabela para uma nova tabela Iceberg gerenciada no Unity Catalog. Consulte Clonar uma tabela do Iceberg gerenciada.
Criar uma exibição materializada compatível com leitores externos do Iceberg
Importante
As visões materializadas gerenciadas do Iceberg estão em Prévia Pública. Para habilitar esse recurso, entre em contato com sua equipe de conta do Databricks.
Você pode criar uma visualização materializada compatível com leitores externos do Iceberg. Para criar um, use USING ICEBERG na instrução CREATE MATERIALIZED VIEW . Para obter a sintaxe completa, consulte CREATE MATERIALIZED VIEW (pipelines). Para ver os requisitos completos, consulte Ativar o acesso externo a dados de tabelas de streaming e visualizações materializadas.
CREATE MATERIALIZED VIEW <mv_name>
USING ICEBERG
AS
SELECT * FROM samples.nyctaxi.trips;
Depois de criar a exibição materializada, execute REPAIR TABLE com SYNC METADATA. Consulte REPAIR TABLE.
REPAIR TABLE <mv_name> SYNC METADATA;
Leitores externos de Iceberg podem ler a visualização materializada, mas não podem gravar nela. Para ler a visão materializada de um leitor Iceberg externo, consulte Habilitar acesso a dados externos para tabelas de streaming e visões materializadas.
Evolução da partição
Com a evolução da partição, você pode alterar o esquema de particionamento de uma tabela do Apache Iceberg existente sem reescrever dados. Novos dados são gravados com o layout de partição atualizado e os dados existentes retêm seu layout de partição original. O Apache Iceberg rastreia as especificações de partição e aplica o filtro correto no momento da consulta. Confira a evolução da partição para Apache Iceberg.
Observação
A evolução da partição é suportada em tabelas gerenciadas do Iceberg por meio de mecanismos externos do Iceberg utilizando o Catálogo REST do Iceberg, mas não por meio do Databricks SQL. Transformações de partição baseadas em expressão, como years() e bucket() não têm suporte para tabelas de Iceberg gerenciadas. Confira Limitações.
Para configurar o acesso externo, consulte Acessar tabelas do Azure Databricks de clientes Apache Iceberg.
Os exemplos a seguir mostram como usar a evolução da partição com o Spark SQL e a extensão Iceberg. Para obter a sintaxe de evolução da partição do Apache Iceberg e as transformações com suporte, consulte a DDL do Apache Iceberg Spark.
Adicionar um campo de partição
Para adicionar um novo campo de partição a uma tabela existente:
ALTER TABLE catalog.schema.table ADD PARTITION FIELD column_name;
Remover um campo de partição
Para remover um campo de partição existente de uma tabela:
ALTER TABLE catalog.schema.table DROP PARTITION FIELD column_name;
Substituir um campo de partição
Para trocar um campo de partição por outro sem uma repartição intermediária:
ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;
Limitações
As seguintes limitações se aplicam às tabelas iceberg em Azure Databricks e estão sujeitas a alterações:
- As tabelas iceberg dão suporte apenas ao formato de arquivo Apache Parquet.
- Para o Iceberg v2, não há suporte para exclusões de posição e exclusões baseadas em igualdade. Em vez disso, o Azure Databricks dá suporte a vetores de exclusão do Iceberg v3 para exclusões em nível de linha.
- A criação de ramificações e marcações não tem suporte. Somente a ramificação principal é acessível ao ler tabelas de Iceberg Estrangeiro.
- Particionamento:
- A evolução da partição tem suporte apenas em tabelas do Iceberg gerenciadas durante a interação com mecanismos do Iceberg externos.
- Tabelas de Iceberg estrangeiras não dão suporte à evolução da partição.
- Não há suporte para particionamento por
BINARYtipo.
- Views não são acessíveis por mecanismos externos do Iceberg.
- Não há suporte para os seguintes tipos de dados:
UUIDFixed(L)TIME-
STRUCTaninhado com campos necessários
- Para limitações específicas do Iceberg v3, consulte Limitações.
Limitações das tabelas gerenciadas do Iceberg
As seguintes limitações se aplicam especificamente às tabelas de Iceberg gerenciadas:
- Não há suporte para a Pesquisa de IA. Consulte a Pesquisa de IA do Databricks.
- Se você usar tabelas de Iceberg gerenciadas como fonte para tabelas sincronizadas para o Lakebase, o processamento incremental com o feed de dados de alteração automática não terá suporte.
- As tabelas de Iceberg gerenciadas só poderão ser criadas se a otimização preditiva estiver habilitada para manutenção de tabela.
- As seguintes propriedades de tabela são gerenciadas pelo Catálogo do Unity e não podem ser definidas manualmente:
write.location-provider.implwrite.data.pathwrite.metadata.pathwrite.format.defaultwrite.delete.format.default
- Não há suporte para o codec de compressão para modificar a compressão de tabelas. Todas as tabelas usam zstd por padrão.
- Não há suporte para particionamento por expressões (por exemplo,
years(),months(),days(),hours(), )bucket(). - Recursos sem suporte no Apache Iceberg também não estão disponíveis para tabelas de Iceberg gerenciadas. Isso inclui colunas geradas do Delta Lake, Restrições no Azure Databricks e Suporte de ordenação para o Delta Lake.
Limitações da tabela do Iceberg Estrangeiro
As seguintes limitações se aplicam especificamente a tabelas de Iceberg estrangeiras:
- A viagem no tempo tem suporte apenas para instantâneos de Iceberg que foram lidos anteriormente em Azure Databricks (ou seja, instantâneos em que uma instrução
SELECTfoi executada). - O uso de funções de transformação de compartimentos para particionamento do Iceberg pode prejudicar o desempenho das consultas quando filtros condicionais são usados.
- Produtos de hierarquização de armazenamento em nuvem, como o Amazon S3, não são integrados a tabelas Iceberg externas. Acessar tabelas de Iceberg estrangeiras em Azure Databricks pode restaurar dados arquivados em camadas de armazenamento de menor custo.
- Em clusters de modo de acesso dedicado, as leituras e as operações
REFRESH FOREIGN TABLEnas tabelas do Iceberg exigemALL PRIVILEGES.