Eu tenho dezenas de milhares de arquivos de texto gzipped, cada um dos quais já foi classificado internamente.
Eu escrevi um script para descompactá-los (criando uma cópia) e, em seguida, usando sort -m
para mesclá-los.
Tudo funciona muito bem, mas ao tentar melhorar o desempenho, notei que a operação de descompactação é de cerca de 16-20% do tempo total de execução.
Basicamente, a operação de mesclagem deve examinar a maior parte dos arquivos de texto repetidamente, mesclando 16 arquivos em um por vez. Normalmente, isso leva a cerca de 4 a 5 exames completos por meio dos dados que tenho. O descompactador essencialmente adiciona uma varredura adicional em tudo.
Salvar 1 de 5 a 6 varreduras por meio de 50 a 100 GB de dados é uma economia substancial.
Assim, comecei a pensar se poderia alimentar a saída de gunzip
diretamente em sort
(ou alguma outra ferramenta) e basicamente combinar a rodada de descompactação com a primeira rodada de mesclagem. A saída não seria gzipped.
Alguém sabe se isso pode ser feito? Idealmente com as ferramentas padrão, mas também estou aberto a ferramentas de terceiros, se for adequado.