

# Consultar conjuntos de dados do Apache Hudi
<a name="querying-hudi"></a>

O [https://hudi.incubator.apache.org/](https://hudi.incubator.apache.org/) é 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:
+ Cumprir os regulamentos de privacidade, como o [Regulamento geral de proteção de dados](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (RGPD) e o [California Consumer Privacy Act](https://en.wikipedia.org/wiki/California_Consumer_Privacy_Act) (CCPA), que determinam o direito das pessoas de remover informações pessoais ou alterar o modo como os dados são utilizados.
+ Trabalhar com dados de streaming de sensores e outros dispositivos da Internet das Coisas (IoT) que exigem eventos específicos de inserção e atualização de dados.
+ Implementar o [sistema de Change Data Capture (CDC – Captura de dados de alteração)](https://en.wikipedia.org/wiki/Change_data_capture).

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 | 

Para obter mais informações sobre as vantagens e desvantagens dos tipos de tabela e consulta, acesse [Table & Queries Types](https://hudi.apache.org/docs/table_types/) na documentação do Apache Hudi.

## Alteração de terminologia do Hudi: as visualizações agora são consultas
<a name="querying-hudi-hudi-dataset-table-types-terminology"></a>

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<br />MoR: visualização em tempo real | Consultas de snapshot | 
| Visualização incremental | Consulta incremental | 
| MoR: visualização otimizada para leitura | Consulta otimizada para leitura | 

**Topics**
+ [Alteração de terminologia do Hudi: as visualizações agora são consultas](#querying-hudi-hudi-dataset-table-types-terminology)
+ [Considerações e limitações](querying-hudi-in-athena-considerations-and-limitations.md)
+ [Exemplos de criação de tabelas do tipo Copiar na gravação (CoW)](querying-hudi-copy-on-write-create-table-examples.md)
+ [Exemplos de criação de tabelas do tipo Mesclar na leitura (MoR)](querying-hudi-merge-on-read-create-table-examples.md)
+ [Usar de metadados Hudi para aprimorar a performance](querying-hudi-metadata-table.md)
+ [Recursos adicionais](querying-hudi-additional-resources.md)