Recentemente fui acionado para fazer uma tarefa no Data Lake que possui aproximadamente 150Tb. Normalmente, o processo de ingestão é automatizado. Porém, às vezes, algum processo para e precisa reprocessar.

Neste caso, os arquivos ingeridos estavam em parte corrompidos. Houve uma falha no processo de descriptografar. Por este motivo, tive que fazer um trabalho não automatizado, refazendo todo o mês de Setembro, e resolvi documentar etapas do processo.

Pela imagem, podemos observar que estamos falando de 18.592 arquivos com um total de 104GB, já compactados.

Neste momento, eu preciso entender o inimigo e preparar as etapas para a batalha. Resolvo quebrar os arquivos em dias, dando em média 956 arquivos dia.

Agora que já tenho os arquivos dentro do HDFS, posso criar as DDL´s no Hive e já consigo bater queries, sendo minha tabela RAW – refletem exatamente meus arquivos.

Já adicionando minhas partições por dia.

Agora com tudo já pronto, eu consigo bater queries usando o Hive com mapreduce.

Estes são meus dados RAW, e representam apenas um dia do mês. Após verificado que os dados funcionaram, eu parto para segunda etapa.

Monto a tabela Stage que receberá as primeiras transformações e enriquecimento. E faço a INSERT INTO SELECT trazendo os dados que me interessam já em um formato vantajoso para analytcs.

Após a conversão para nossa tabela Stage, ficamos com 837 arquivos, totalizando 240GB com mais de 120 milhões de registros.

Ao fazer um simples count, a query demorou 0.96s, ou seja, menos de 1 segundo para retornar.

Nossa próxima etapa, é criar a tabela final já particionada de forma a dar ainda mais performance as queries. Mas isso é tema para um outro artigo.