Usar tabelas do Apache Iceberg - Amazon Athena

Usar tabelas do Apache Iceberg

O Athena oferece suporte a consultas de leitura, viagem no tempo, gravação e DDL para tabelas Apache Iceberg que usam o formato Apache Parquet para dados e o catálogo do AWS Glue para metastore.

Apache Iceberg é um formato de tabela aberta para conjuntos de dados analíticos muito grandes. O Iceberg gerencia grandes coleções de arquivos como tabelas e suporta modernas operações de data lake analítico, como inserção, atualização, exclusão no nível do registro e consultas de viagem no tempo. A especificação do Iceberg permite uma evolução contínua da tabela, como uma evolução de esquema e partição, e é concebida para otimizar o uso no Amazon S3. O Iceberg também ajuda a garantir a correção dos dados em cenários de gravação simultâneos.

Para obter mais informações sobre o Apache Iceberg, consulte https://iceberg.apache.org/.

Considerações e limitações

O suporte do Athena para tabelas Iceberg tem as seguintes considerações e limitações:

  • Suporte à versão Iceberg — O Athena é compatível com o Apache Iceberg versão 1.4.2.

  • Tabelas somente com catálogo do AWS Glue: apenas tabelas Iceberg criadas com base no catálogo do AWS Glue de acordo com as especificações definidas pela implementação de código aberto do catálogo do Glue são compatíveis com o Athena.

  • Suporte de bloqueio de tabela apenas pelo AWS Glue: ao contrário da implementação de código aberto do catálogo do Glue, que oferece suporte ao bloqueio personalizado de plug-in, o Athena oferece suporte apenas ao bloqueio otimista do AWS Glue. Usar o Athena para modificar uma tabela do Iceberg com qualquer outra implementação de bloqueio causará perda de dados e quebra de transações.

  • Formatos de arquivo compatíveis: a compatibilidade do formato de arquivo do Iceberg no Athena depende da versão do mecanismo do Athena, conforme mostrado na tabela a seguir.

    Versão do mecanismo do Athena Parquet ORC Avro
    2 Sim Não Não
    3 Sim Sim Sim
  • Tabelas Iceberg v2: o Athena só cria e opera tabelas Iceberg v2. Para saber a diferença entre as tabelas da v1 e v2, consulte Alterações de versão do formato na documentação do Apache Iceberg.

  • Exibição de tipos de hora sem fuso horário: a hora e o carimbo de data/hora sem tipos de fuso horário são exibidos no UTC. Se o fuso horário não for especificado em uma expressão de filtro em uma coluna de hora, o UTC será usado.

  • Precisão dos dados relacionados ao carimbo de data e hora: embora o Iceberg seja compatível com uma precisão de microssegundos para o tipo de dados de carimbo de data e hora, o Athena é compatível apenas com a precisão de milissegundos para carimbos de data e hora em leituras e gravações. Para dados em colunas relacionadas a horas gravadas durante operações de compactação manual, o Athena retém somente uma precisão de milissegundos.

  • Operações sem suporte: as seguintes operações do Athena não são compatíveis com tabelas Iceberg.

  • Visualizações: use CREATE VIEW para criar visualizações do Athena, conforme descrito em Trabalhar com visualizações. Se você tiver interesse em usar a especificação de visualização do Iceberg para criar visualizações, entre em contato com athena-feedback@amazon.com.

  • Comandos de gerenciamento de TTF não compatíveis com o AWS Lake Formation: embora seja possível usar o Lake Formation para gerenciar permissões de acesso de leitura para TransactionTable Formats (TTFs), como Apache Iceberg, Apache Hudi e Linux Foundation Delta Lake, não é possível usar o Lake Formation para gerenciar permissões para operações como VACUUM, MERGE, UPDATE ou OPTIMIZE com esses formatos de tabela. Para obter mais informações sobre a integração do Lake Formation com o Athena, consulte Usar o AWS Lake Formation com o Amazon Athena no Guia do desenvolvedor do AWS Lake Formation.

  • Particionar por campos aninhados - A partição por campos aninhados não é suportada. A tentativa de fazer isso produz a mensagem NÃO SUPORTADO: particionar por campo aninhado não é suportado: column_name.nested_field_name.

  • Não é possível ignorar objetos do S3 Glacier: se os objetos na tabela do Apache Iceberg estiverem em uma classe de armazenamento do Amazon S3 Glacier, definir a propriedade da tabela read_restored_glacier_objects como false não terá efeito.

    Por exemplo, suponhamos que você emita o seguinte comando:

    ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')

    Para tabelas do Iceberg e do Delta Lake, o comando gera o erro Chave de propriedade da tabela não compatível: read_restored_glacier_objects. Para tabelas do Hudi, o comando ALTER TABLE não gera um erro, mas os objetos do Amazon S3 Glacier ainda assim não são ignorados. A execução de consultas SELECT após o comando ALTER TABLE continua a retornar todos os objetos.

Se quiser que o Athena ofereça suporte a recurso específico, envie comentários para athena-feedback@amazon.com.