Consultar conjuntos de dados do Apache Hudi - Amazon Athena

Consultar conjuntos de dados do Apache Hudi

O Apache Hudi é um framework de gerenciamento de dados de código aberto que simplifica o processamento incremental de dados. As ações de inserção, atualização, upsert e exclusão no nível do registro são processadas de forma muito mais granular, reduzindo a sobrecarga. Upsert refere-se à capacidade de inserir registros em um conjunto de dados existente, se eles ainda não existirem, ou atualizá-los, se já existirem.

O Hudi processa os eventos de inserção e atualização de dados sem criar muitos arquivos pequenos que podem causar problemas de performance em analytics. O Apache Hudi monitora automaticamente as alterações e mescla os arquivos para que mantenham o dimensionamento ideal. Isso evita a necessidade de criar soluções personalizadas que monitoram e regravam muitos arquivos pequenos em menos arquivos grandes.

Os conjuntos de dados do Hudi são adequados para os seguintes casos de uso:

Os conjuntos de dados gerenciados pelo Hudi são armazenados no Amazon S3 em formatos de armazenamento abertos. Atualmente, o Athena pode ler conjuntos de dados compactados do Hudi, mas não pode gravar dados do Hudi. O Athena é compatível com o Hudi até a versão 0.8.0 com o mecanismo Athena versão 2 e com o Hudi versão 0.14.0 com o mecanismo Athena versão 3. Isso está sujeito a alteração. O Athena não pode garantir a compatibilidade de leitura com tabelas criadas com versões posteriores do Hudi. Para obter informações sobre o versionamento do mecanismo do Athena, consulte Versionamento do mecanismo do Athena. Para obter mais informações sobre os recursos e o versionamento do Hudi, consulte a documentação do Hudi no site do Apache.

O tipo de conjunto de dados do Hudi pode ser um destes:

  • Copy on Write (CoW – Copiar na gravação): os dados são armazenados em um formato colunar (Parquet), e cada atualização cria uma nova versão dos arquivos durante uma gravação.

  • Merge on Read (MoR – Mesclar na leitura): os dados são armazenados usando uma combinação de formatos colunares (Parquet) e baseados em linha (Avro). As atualizações são registradas em arquivos delta baseados em linha e compactadas conforme necessário para criar novas versões dos arquivos colunares.

Com conjuntos de dados CoW, sempre que há uma atualização para um registro, o arquivo que contém o registro é regravado com os valores atualizados. Com um conjunto de dados MoR, sempre que há uma atualização, o Hudi grava apenas a linha do registro alterado. MoR é mais adequado para cargas de trabalho com maior volume de gravações ou alterações e menor volume de leituras. O tipo CoW é mais adequado para workloads com maior volume de leituras em dados que mudam com menos frequência.

O Hudi oferece três tipos de consulta para acessar os dados:

  • Consultas de snapshot: consultas que veem o snapshot mais recente da tabela a partir de uma determinada ação de confirmação ou compactação. Para tabelas MoR, as consultas de snapshot expõem o estado mais recente da tabela mesclando os arquivos base e delta da fatia de arquivo mais recente no momento da consulta.

  • Consultas incrementais: as consultas veem somente os novos dados gravados na tabela, a partir de uma determinada confirmação/compactação. Desse modo, os streams de alteração são fornecidos para habilitar pipelines de dados incrementais.

  • Ler consultas otimizadas: para tabelas MoR, as consultas veem os dados mais recentes compactados. Para tabelas CoW, as consultas veem os dados mais recentes confirmados.

A tabela a seguir mostra os possíveis tipos de consulta do Hudi para cada tipo de tabela.

Tipo de tabela Possíveis tipos de consulta do Hudi
Copiar na gravação snapshot, incremental
Mesclar na leitura snapshot, incremental, otimizado para leitura

Atualmente, o Athena permite consultas de snapshot 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.

Alteração de terminologia do Hudi: as visualizações agora são consultas

A partir da versão 0.5.1 do Apache Hudi, o que antes era chamado de visualizações agora é chamado de consultas. A tabela a seguir resume as alterações entre os termos antigos e novos.

Termo antigo Termo novo

CoW: visualização otimizada para leitura

MoR: visualização em tempo real

Consultas de snapshot

Visualização incremental Consulta incremental
MoR: visualização otimizada para leitura Consulta otimizada para leitura