Dado um arquivo como:
a
b
c
Como obtenho uma saída como:
a 0cc175b9c0f1b6a831c399e269772661
b 92eb5ffee6ae2fec3ad71c777531578f
c 4a8a08f09d37b73795649038408b5f33
de forma eficiente? (A entrada é de 80 GB)
Dado um arquivo como:
a
b
c
Como obtenho uma saída como:
a 0cc175b9c0f1b6a831c399e269772661
b 92eb5ffee6ae2fec3ad71c777531578f
c 4a8a08f09d37b73795649038408b5f33
de forma eficiente? (A entrada é de 80 GB)
Além da abordagem do @Ole Tange, aqui está uma solução otimizada (parte do Python):
md5summer.py
roteiro:Pontos de otimização:
hashlib
- usando a biblioteca real em vez de uma obsoletafor r in sys.stdin:
- leitura de objeto semelhante a gerador em vez de listaif r.strip():
- verifique o registro vazio para evitarhashlib
invocações de métodos redundantesUso:
Exemplo de saída:
Isso poderia ser apenas um oneliner em perl:
Se você precisar armazenar a saída e quiser uma boa barra de progresso enquanto mastiga este grande pedaço:
Primeiro faça um programa de thread único (
md5er
), que pode gerar a saída correta dada a entrada:Em seguida, use o GNU Parallel para dividir a entrada em partes que podem ser distribuídas para servidores de computação: