Ik ben momenteel met diverse benchmarks bezig geweest om op een zo snel mogelijke mannier gegevens te ontdubbelen.
Het gaat hier om ongeveer 15 tot 25 GB aan plain text files (logs van diverse servers) waar ik uit alle bestanden geen enkele duplicate regel wil. De bestanden zijn netjes opgedeeld in bestanden van ongeveer 600 MB.
Nu wil ik dit dus gaan ontdubbelen op een snelle mannier. Gezien ik niet erg wiskundig aangelegd ben maar wel met wat programmeer talen overweg kan zoek ik hier een uitweg voor (python/perl etc).
Zelf heb ik gedacht aan het volgende linux commando:
cat *.txt | sort | uniq > geendubbelen.txt
Maar dit heeft op 15 GB niet echt een effectieve benadering, en duwt in notime mijn 2 GB ram vol.
Verder heb ik in Python even simpel programmatje gemaakt die 1 file ontdubbeld:
De Python code duurt ongeveer 166 seconden per 600 MB wat opzich nog wel acceptabel is maar ik schiet niet veel verder op met het gehele probleem: alle files ontdubbelen tot 1 grote file zonder dubbele regels.
Heeft iemand hier een oplossing voor, idee, of suggesties?
Bvd.
Woutie
Het gaat hier om ongeveer 15 tot 25 GB aan plain text files (logs van diverse servers) waar ik uit alle bestanden geen enkele duplicate regel wil. De bestanden zijn netjes opgedeeld in bestanden van ongeveer 600 MB.
Nu wil ik dit dus gaan ontdubbelen op een snelle mannier. Gezien ik niet erg wiskundig aangelegd ben maar wel met wat programmeer talen overweg kan zoek ik hier een uitweg voor (python/perl etc).
Zelf heb ik gedacht aan het volgende linux commando:
cat *.txt | sort | uniq > geendubbelen.txt
Maar dit heeft op 15 GB niet echt een effectieve benadering, en duwt in notime mijn 2 GB ram vol.
Verder heb ik in Python even simpel programmatje gemaakt die 1 file ontdubbeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| import os
import sys
f = open(sys.argv[1],'r')
m = {}
for l in f:
l = l.strip()
m[l] = 1
for k in m:
# Hier schrijf ik dan naar file |
De Python code duurt ongeveer 166 seconden per 600 MB wat opzich nog wel acceptabel is maar ik schiet niet veel verder op met het gehele probleem: alle files ontdubbelen tot 1 grote file zonder dubbele regels.
Heeft iemand hier een oplossing voor, idee, of suggesties?
Bvd.
Woutie