Pular para o conteúdo principal

O que é o Apache Iceberg na Databricks?

info

Pré-visualização pública

As tabelas do Unity Catalog-gerenciar Iceberg estão disponíveis em Public Preview em Databricks Runtime 16.4 LTS e acima. As tabelas estrangeiras Iceberg também estão em Public Preview em Databricks Runtime 16.4 LTS e acima.

Os recursos Iceberg v3 estão disponíveis em versão prévia pública no Databricks Runtime 18.0 e versões superiores. Consulte Usar recurso Apache Iceberg v3.

Apache Iceberg é um formato de tabela de código aberto para cargas de trabalho analíticas. Suporta recursos como evolução do esquema, viagem do tempo e particionamento oculto. Assim como o Delta Lake, o Iceberg fornece uma camada de abstração que permite transações ACID em dados armazenados em armazenamento de objetos. O Databricks oferece suporte a tabelas Iceberg que utilizam o formato de arquivo Apache Parquet. O Iceberg mantém a atomicidade e a consistência ao gravar novos arquivos de metadados para cada alteração na tabela.

Um catálogo Iceberg é a camada de nível superior da arquitetura da tabela Iceberg. Ele lida com operações como criação, eliminação e renomeação de tabelas. Sua principal responsabilidade é fornecer os metadados atuais quando uma tabela é carregada. Databricks suporta Iceberg tabelas gerenciar por:

Todas as tabelas Iceberg no Databricks seguem a especificação de formato de tabela Iceberg aberta. Consulte a especificação da tabela Iceberg.

Criar tabelas Iceberg no Unity Catalog

Iceberg As tabelas criadas em Unity Catalog são gerenciadas por Iceberg. Você pode criar essas tabelas usando:

gerenciar tabelas Iceberg são totalmente integradas com o recurso da plataforma Databricks . Unity Catalog gerencia tarefas de ciclo de vida, como expiração de instantâneos e compactação de arquivos nessas tabelas. gerenciar tabelas Iceberg também suportam clusteringlíquido, o que melhora o desempenho da consulta. A otimização preditiva automatiza essas tarefas para reduzir custos de armazenamento e melhorar a velocidade das consultas. Databricks recomenda usar os clientes Iceberg 1.9.2 e acima para ler e gravar no Unity Catalog.

Leia Iceberg tables gerenciar por outros catálogos

Uma tabela estrangeira Iceberg é uma tabela Iceberg gerenciada por um catálogo fora de Unity Catalog. O catálogo externo armazena os metadados atuais da tabela. Databricks usa a Lakehouse Federation para recuperar metadados e ler a tabela do armazenamento de objetos.

As tabelas Foreign Iceberg são somente leitura no Databricks e têm suporte limitado à plataforma.

Acesse as tabelas Iceberg usando sistemas externos.

O senhor pode acessar todas as tabelas do Iceberg no Unity Catalog usando a API REST Catalog do Iceberg. Essa API aberta oferece suporte a operações de leitura e gravação de mecanismos Iceberg externos em diferentes idiomas e plataformas. Consulte Acessar tabelas do Databricks a partir de clientes do Apache Iceberg.

O catálogo REST oferece suporte à venda de credenciais, que fornece credenciais temporárias a mecanismos externos para acessar o armazenamento subjacente. Para obter mais informações, consulte Unity Catalog credential vending for external system access.

atenção

A distribuição de credenciais não é compatível com espaços de trabalho que utilizam o armazenamento default . Consulte as limitações.

Evolução da partição

Com a evolução de partições, você pode alterar o esquema de particionamento de uma tabela existente do Apache Iceberg sem sobrescrever os dados. Novos dados são gravados com a disposição de partição atualizada e os dados existentes mantêm sua disposição de partição original. O Apache Iceberg rastreia as especificações de partição e aplica o filtro correto no momento da consulta. Veja a evolução das partições para o Apache Iceberg.

nota

A evolução de partições é suportada no gerenciamento de tabelas Iceberg por meio de mecanismos Iceberg externos usando o Catálogo REST Iceberg , mas não por meio Databricks SQL. Transformações de partição baseadas em expressões, como years() e bucket() não são suportadas para gerenciar tabelas Iceberg . Consulte as limitações da tabela Iceberg.

Para configurar o acesso externo, consulte Acessar tabelas do Databricks a partir de clientes Apache Iceberg.

Os exemplos a seguir mostram como usar a evolução de partições com o Spark SQL e a extensão Iceberg. Para obter informações sobre a sintaxe de evolução de partições do Apache Iceberg e as transformações suportadas, consulte Apache Iceberg Spark DDL.

Adicionar um campo de partição

Para adicionar um novo campo de partição a uma tabela existente:

SQL
ALTER TABLE catalog.schema.table ADD PARTITION FIELD column_name;

Solte um campo de partição

Para remover um campo de partição existente de uma tabela:

SQL
ALTER TABLE catalog.schema.table DROP PARTITION FIELD column_name;

Substitua um campo de partição

Para swap um campo de partição por outro sem uma repartição intermediária:

SQL
ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;

Limitações da tabela Iceberg

As seguintes limitações se aplicam às tabelas Iceberg no Databricks e estão sujeitas a alterações:

  • As tabelas do Iceberg suportam apenas o formato de arquivo Apache Parquet.

  • O Databricks é compatível com as versões 1, 2 e 3 da especificação Iceberg.

    • Para limitações específicas da versão 3, consulte Limitações.
  • Exclusões de posição e exclusões baseadas em igualdade no Iceberg v2 não são suportadas. Em vez disso, o Databricks oferece suporte a vetores de exclusão Iceberg v3 para exclusões em nível de linha.

  • A ramificação e a marcação não são suportadas. Somente o ramo principal pode ser acessado ao ler tabelas Iceberg estrangeiras.

  • Particionamento:

    • A evolução da partição é suportada nas tabelas do gerenciar Iceberg somente ao interagir com mecanismos externos do Iceberg.
    • As tabelas Iceberg estrangeiras não suportam a evolução da partição.
    • O particionamento por tipo BINARY não é suportado.
  • As visualizações não são suportadas.

  • Os seguintes tipos de dados não são suportados:

    • UUID
    • Fixed(L)
    • TIME
    • STRUCT aninhado com campos obrigatórios

gerenciar Iceberg limitações da tabela

As limitações a seguir se aplicam especificamente às tabelas do gerenciar Iceberg:

  • A busca vetorial não é suportada.

  • O Iceberg não suporta o feed de dados de alterações. Consequentemente, o processamento incremental não é suportado ao ler tabelas Iceberg gerenciadas como fonte para:

    • Visualização materializada e tabelas de transmissão
    • perfil de dados
    • Tabelas online
    • Lakebase
    • Classificação de dados
  • gerenciar tabelas Iceberg só podem ser criadas se a otimização preditiva estiver habilitada para manutenção de tabelas.

  • As seguintes propriedades da tabela são gerenciadas pelo Unity Catalog e não podem ser definidas manualmente:

    • write.location-provider.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.delete.format.default
  • O codec de compressão para alterar a compressão da tabela não é compatível. Todas as tabelas usam Zstd por default.

  • O particionamento por expressões (por exemplo, years(), months(), days(), hours(), bucket()) não é suportado.

  • Recursos não são suportados no Apache Iceberg e também não estão disponíveis para gerenciar tabelas Iceberg . Isso inclui colunas geradas pelo Delta Lake, restrições no Databricks e suporte a agrupamento para o Delta Lake.

Limitações da tabela Iceberg estrangeira

As limitações a seguir se aplicam especificamente a tabelas Iceberg estrangeiras:

  • A viagem do tempo é suportada somente para Iceberg Snapshot que tenha sido lido anteriormente em Databricks (ou seja, Snapshot em que uma instrução SELECT foi executada).
  • O uso de funções de transformação de balde para o particionamento do Iceberg pode prejudicar o desempenho da consulta quando são usados filtros condicionais.
  • Os produtos de classificação por níveis de armazenamento em nuvem, como Amazon S3 , não estão integrados às tabelas estrangeiras Iceberg. O acesso a tabelas Iceberg estrangeiras no Databricks pode restaurar dados arquivados em camadas de armazenamento de baixo custo.
  • No clustering de modo de acesso dedicado, as leituras e REFRESH FOREIGN TABLE operações nas tabelas Iceberg exigem ALL PRIVILEGES.