Como o Hudi funciona - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como o Hudi funciona

Ao usar o Hudi com a AmazonEMR, você pode gravar dados no conjunto de dados usando a fonte de dados Spark API ou o utilitário Hudi. DeltaStreamer O Hudi organiza um conjunto de dados em uma estrutura de diretórios particionada em um basepath que é semelhante a uma tabela tradicional do Hive. As especificidades de como os dados são definidos como arquivos nesses diretórios dependem do tipo de conjunto de dados escolhido. É possível escolher Copiar na gravação (CoW – Copy on Write) ou Mesclar na leitura (MoR – Merge on Read).

Independentemente do tipo de conjunto de dados, cada partição em um conjunto de dados é identificada exclusivamente por seu partitionpath relativo ao basepath. Dentro de cada partição, os registros são distribuídos em vários arquivos de dados. Para obter mais informações, consulte File management na documentação do Apache Hudi.

Cada ação no Hudi tem uma confirmação correspondente, identificada por um carimbo de data/hora monotonicamente crescente conhecido como Instant. O Hudi mantém uma série de todas as ações executadas no conjunto de dados como uma linha do tempo. O Hudi conta com a linha do tempo para fornecer isolamento de snapshot entre leitores e gravadores e para permitir a reversão para um momento anterior específico. Para obter mais informações sobre as ações registradas pelo Hudi e o estado das ações, consulte Linha do tempo na documentação do Apache Hudi.

Noções básicas sobre os tipos de armazenamento de conjuntos de dados: copiar na gravação ou mesclar na leitura

Ao criar um conjunto de dados do Hudi, você especifica se o conjunto de dados é do tipo copiar na gravação ou mesclar na leitura.

  • 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. CoW é o tipo de armazenamento padrã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 são 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. CoW é mais adequado para cargas de trabalho com maior volume de leituras em dados que mudam com menos frequência.

O Hudi fornece três visualizações lógicas para acessar os dados:

  • Visão otimizada para leitura: fornece o conjunto de dados confirmado mais recente de tabelas CoW e o conjunto de dados compactados mais recente de tabelas MoR.

  • Visualização incremental — fornece um fluxo de mudança entre duas ações de um conjunto de dados CoW para alimentar trabalhos posteriores e fluxos de trabalho de extração, transformação e carregamento ()ETL.

  • Visão em tempo real: fornece os dados confirmados mais recentes de uma tabela MoR ao mesclar os arquivos baseados em colunas e linhas em linha.

Quando você consulta a visualização otimizada para leitura, a consulta retorna todos os dados compactados, mas não inclui as últimas confirmações delta. A consulta desses dados apresenta bom desempenho de leitura, mas omite os dados mais recentes. Quando você consulta a visualização em tempo real, o Hudi mescla os dados compactados com as confirmações delta na leitura. Os dados mais recentes estão disponíveis para consulta, mas a sobrecarga computacional da mesclagem prejudica o desempenho da consulta. A capacidade de consultar dados compactados ou dados em tempo real permite a você escolher entre o desempenho e a flexibilidade nas consultas.

Para obter mais informações sobre as vantagens e desvantagens dos tipos de armazenamento, consulte Tipos e visões de armazenamento na documentação do Apache Hudi.

O Hudi cria duas tabelas no metastore do Hive para MoR: uma tabela com o nome especificado por você, que é uma visão otimizada para leitura, e uma tabela com o mesmo nome anexado com _rt, que é uma visão em tempo real. É possível consultar as duas tabelas.

Registrar um conjunto de dados do Hudi com seu metastore

Ao registrar uma tabela Hudi na metastore Hive, você pode consultar tabelas Hudi usando Hive, Spark SQL ou Presto como faria com qualquer outra tabela. Além disso, você pode integrar o Hudi com o AWS Glue configurando o Hive e o Spark para usar o AWS Glue Data Catalog como metastore. Para tabelas MoR, o Hudi registra o conjunto de dados como duas tabelas no Metastore: uma tabela com o nome especificado por você, que é uma visão otimizada para leitura, e uma tabela com o mesmo nome anexado com _rt, que é uma visão em tempo real.

Você registra uma tabela do Hudi com o metastore do Hive ao usar o Spark para criar um conjunto de dados do Hudi ao definir a opção HIVE_SYNC_ENABLED_OPT_KEY como "true" e fornecendo outras propriedades necessárias. Para ter mais informações, consulte Trabalhe com um conjunto de dados do Hudi. Além disso, é possível usar o utilitário de linha de comando hive_sync_tool para registrar um conjunto de dados do Hudi como uma tabela no seu metastore, separadamente.