Was ist ein guter Algorithmus zum Sortieren von Textdateien, die größer als verfügbarer Speicher (viele 10 GByte) sind und Datensätze mit variabler Länge enthalten? Alle Algorithmen, die ich gesehen habe, gehen davon aus, dass 1) Daten in den Speicher passen oder 2) Datensätze fester Länge sind. Aber stellen Sie sich eine große CSV-Datei, die ich durch das „Geburtsdatum“ -Feld (das vierte Feld) sortieren wollte:Sortieralgorithmus: Große Textdatei mit Zeilen variabler Länge (durch Komma getrennte Werte)
Id,UserId,Name,BirthDate
1,psmith,"Peter Smith","1984/01/01"
2,dmehta,"Divya Mehta","1985/11/23"
3,scohen,"Saul Cohen","1984/08/19"
...
99999999,swright,"Shaun Wright","1986/04/12"
100000000,amarkov,"Anya Markov","1984/10/31"
Ich weiß, dass:
- Dies liefe auf einer Maschine (nicht verteilt).
- Die Maschine, auf der ich das ausführen würde, hätte mehrere Prozessoren.
- Die Dateien, die ich sortieren würde, könnten größer sein als der physische Speicher der Maschine.
- Eine Datei enthält Zeilen variabler Länge. Jede Zeile würde aus einer festen Anzahl von Spalten bestehen (durch Trennzeichen getrennte Werte). Eine Datei würde nach einem bestimmten Feld sortiert (dh nach dem vierten Feld in der Datei).
- Eine ideale Lösung wäre wahrscheinlich "verwenden Sie diese vorhandene Sortier-Dienstprogramm", aber ich bin auf der Suche nach dem besten Algorithmus.
- Ich erwarte keine vollständig codierte, funktionierende Antwort; etwas mehr in Richtung "check this out, hier ist so, wie es funktioniert, oder hier ist, warum es gut für dieses Problem funktioniert." Ich weiß einfach nicht, wo ich suchen soll ...
- Das sind keine Hausaufgaben!
Vielen Dank! ♥