View a markdown version of this page

Considerações e limitações - Amazon Athena

Considerações e limitações

Ao usar o Athena para ler tabelas do Apache Hudi, considere os pontos apresentados a seguir.

  • Operações de leitura e gravação: o Athena pode ler conjuntos de dados compactados do Hudi, mas não pode gravar dados do Hudi.

  • Versões do Hudi: o Athena é compatível com a versão 0.14.0 (padrão) e a 0.15.0 do Hudi. O Athena não pode garantir a compatibilidade de leitura com tabelas criadas com versões posteriores do Hudi. Para obter mais informações sobre os recursos e o versionamento do Hudi, consulte a documentação do Hudi no site do Apache. Observe que a versão 0.15.0 do conector Hudi no Athena não oferece suporte a tabelas inicializadas. Para usar a versão 0.15.0 do conector Hudi, defina a seguinte propriedade da tabela:

    ALTER TABLE table_name SET TBLPROPERTIES ('athena_enable_native_hudi_connector_implementation' = 'true')
  • Consultas entre contas: a versão 0.15.0 do conector Hudi não é compatível com consultas entre contas.

  • Tipos de consulta: atualmente, o Athena permite consultas de snapshots e consultas otimizadas para leitura, mas não permite consultas incrementais. Nas tabelas MoR, todos os dados expostos a consultas otimizadas para leitura são compactados. Isso permite uma boa performance, mas não inclui as confirmações delta mais recentes. As consultas de snapshot contêm os dados mais recentes, mas geram um pouco de sobrecarga computacional, o que reduz a performance dessas consultas. Para obter mais informações sobre as vantagens e desvantagens dos tipos de tabela e consulta, acesse Table & Queries Types na documentação do Apache Hudi.

  • Consultas incrementais — O Athena não aceita consultas incrementais.

  • CTAS — O Athena não aceita CTAS nem INSERT INTO em dados do Hudi. Se você quiser ajuda do Athena para escrever conjuntos de dados do Hudi, envie feedback para .

    Para obter mais informações sobre como escrever dados do Hudi, consulte os seguintes recursos:

  • MSCK REPAIR TABLE — Não é permitido usar MSCK REPAIR TABLE em tabelas do Hudi no Athena. Se você precisar carregar uma tabela do Hudi que não foi criada no AWS Glue, use ALTER TABLE ADD PARTITION.

  • Não é possível ignorar os objetos do Amazon Glacier: se os objetos na tabela do Apache Hudi estiverem em uma classe de armazenamento do Amazon Glacier, definir a propriedade da tabela read_restored_glacier_objects como false não surtirá 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 as tabelas do Hudi, o comando ALTER TABLE não gera erro, mas mesmo assim os objetos do Amazon Glacier não são ignorados. A execução de consultas SELECT após o comando ALTER TABLE continua a retornar todos os objetos.

  • Consultas de timestamp — Atualmente, as consultas que tentam ler colunas de timestamp nas tabelas de tempo real do Hudi falham ou produzem resultados vazios. Essa limitação se aplica somente às consultas que leem uma coluna de timestamp. As consultas que incluem somente colunas sem timestamp da mesma tabela são bem-sucedidas.

    Consultas com falha retornam uma mensagem semelhante à seguinte:

    GENERIC_INTERNAL_ERROR: class org.apache.hadoop.io.ArrayWritable cannot be cast to class org.apache.hadoop.hive.serde2.io.TimestampWritableV2 (org.apache.hadoop.io.ArrayWritable and org.apache.hadoop.hive.serde2.io.TimestampWritableV2 are in unnamed module of loader io.trino.server.PluginClassLoader @75c67992)

  • Permissões de Lake Formation no conector Hudi 0.15.0: esta limitação se aplica somente quando você opta por usar o conector Hudi nativo (versão 0.15.0) definindo a propriedade da tabela athena_enable_native_hudi_connector_implementation como true. Por padrão, o Athena usa o conector Hudi versão 0.14.0, que não exige essa permissão adicional. Para consultar uma tabela protegida do Lake Formation, você deve conceder permissões ao Lake Formation tanto para a localização dos dados da tabela quanto para o diretório de metadados .hoodie. Por exemplo, se sua tabela Hudi estiver localizada em s3://bucket/hudi-table/, você deve se registrar e conceder permissões tanto para s3://bucket/hudi-table/ quanto para s3://bucket/hudi-table/.hoodie/ no Lake Formation. O diretório .hoodie contém arquivos de metadados (como hoodie.properties) que o Athena precisa ler durante o planejamento da consulta. Sem permissões para o diretório .hoodie, as consultas falharão com erros de permissão negada.