Was ist ein angemessenes Skalierbarkeitslimit für 'sort -u'? (in den Dimensionen "Zeilenlänge", "Zeilenanzahl", "Gesamtdateigröße"?)
Was ist eine Unix-Alternative für Dateien, die diese Dimension der "Zeilenanzahl" überschreiten? (Natürlich kann ich leicht eins implementieren, aber ich habe mich gefragt, ob es etwas gibt, das mit wenigen Standard-Linux-Befehlen gemacht werden kann?)
uniq
vorhersort -u
geholfen wird. Übrigens, für ASCII-DatenLC_ALL=C sort
beschleunigt GNUsort
eine Menge (siehe diese Antwort )Antworten:
Das
sort
, was Sie unter Linux finden, stammt aus dem coreutils- Paket und implementiert eine externe R-Way-Zusammenführung . Es teilt die Daten in Blöcke auf, die es im Speicher verarbeiten kann, speichert sie auf der Disc und führt sie dann zusammen. Die Chunks werden parallel ausgeführt, wenn die Maschine die Prozessoren dafür hat.Wenn es also ein Limit geben sollte, ist es der freie Speicherplatz, der
sort
zum Speichern der temporären Dateien verwendet werden kann, die zusammengeführt werden müssen, kombiniert mit dem Ergebnis.quelle
sort -o file file
)Ich kann nicht für herstellerspezifische Implementierungen sprechen, aber die
UNIX sort
Implementierung teilt große Dateien in kleinere Dateien auf, sortiert diese Dateien und kombiniert dann die sortierten kleineren Dateien zu einer aggregierten sortierten Ausgabe.Die einzige Einschränkung ist der Speicherplatz für die kleineren Dateien, die zwischenzeitlich von erstellt
sort
wurden. Sie können jedoch in ein beliebiges Verzeichnis umgeleitet werden, indem Sie die Umgebungsvariable festlegenTMPDIR
.quelle
man largefile
Listetsort
als große Datei bewusst.sort
? Oder irgendeine Ableitung irgendeiner Version von AT & T Unix? Oder eine von Unix zertifizierte Version vonsort
(wie GNUsort
unter OS / X)?sort
Implementierungen in Bezug auf Multi-Byte-Zeichen kann variieren. Die Tatsache, dasssort
geteilte Zwischendateien verwendet werden, ist allen UNIX-Implementierungen gemeinsam, die auf dem Originalcode basieren. Übrigens: Die Solaris-Version ist OSS als "OpenSolaris", siehe sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/…Basierend auf https://blog.mafr.de/2010/05/23/sorting-large-files/ und /unix//a/88704/9689 :
Aktualisieren:
Aus den obigen Antworten geht hervor, dass
sort
bereits das, was als Snippet bezeichnet wurde, dh das Zusammenführen externer R-Wege, erfolgt . Also immerhin läuft einfach:Sollte ausreichen.
Meine aktuellen Annahmen (ohne Code zu überprüfen) zu Limits sind:
(Diese Antwort ist als Community-Wiki markiert - fühle dich ermutigt, sie zu verbessern! :))
quelle
sort
sortiert standardmäßig parallel (seit 2010 nach der Seite, auf die Sie verlinken),--parallel
um die Anzahl der gleichzeitigen Threads zu verringern, anstattsort
den optimalen zu bestimmen. Sort führt bereits eine effizientere interne Aufteilung und Zusammenführung durch. Ich bezweifle, dass diese zusätzliche Aufteilung helfen wird.