Folgendes mache ich gerade:
sort -T /some_dir/ --parallel=4 -uo file_sort.csv -k 1,3 file_unsort.csv
Die Datei ist 90 GB, ich habe diese Fehlermeldung erhalten
sort: close failed: /some_dir/sortmdWWn4: Disk quota exceeded
Bisher habe ich die Option -T nicht verwendet und anscheinend ist das tmp-Verzeichnis nicht groß genug, um dies zu handhaben. Mein aktuelles Verzeichnis hat freien Speicherplatz von ungefähr 200 GB. Reicht es immer noch nicht für die temporäre Sortierdatei?
Ich weiß nicht, ob die parallele Option die Dinge beeinflusst oder nicht.
disk-usage
sort
parallelism
large-files
Xuezhou Zhang
quelle
quelle
$HOME
/tmp
sort
, habe ich möglicherweise eine Problemumgehung für Sie.Antworten:
Das Problem ist, dass Sie anscheinend ein Festplattenkontingent eingerichtet haben und Ihr Benutzer nicht das Recht hat, so viel Speicherplatz in Anspruch zu nehmen
/some_dir
. Und nein, die--parallel
Option sollte dies nicht beeinflussen.Um dieses Problem zu umgehen, können Sie die Datei in kleinere Dateien aufteilen, diese einzeln sortieren und sie dann wieder zu einer einzigen Datei zusammenführen:
Die Magie ist die
-m
Option von GNU sort (voninfo sort
):Dazu müssen Sie ~ 180G für eine 90G-Datei frei haben, um alle Teile speichern zu können. Die eigentliche Sortierung nimmt jedoch nicht so viel Platz ein, da Sie nur in 100 Millionen Blöcken sortieren werden.
quelle
-b
honorus Linien, also auf rund Chunkgrößen auf Zeilenumbrüche aufgeteilt? Ich kann nichts in sehenman split
, ich bin besorgt, ob es tragbare Erwartung in Richtung Split Regaring geben kann, ohne Linien in der Mitte zu brechensort
Funktioniert standardmäßig mit Zeilen. Das gesamte Konzept der Sortierung basiert auf dem Sortieren von Zeilen . Daher müssen hier die Zeilengrenzen berücksichtigt werden. Ich habe den Quellcode nicht überprüft, aber es ist das einzige, was Sinn macht.