現在、500GBのテキストファイルのUNIXソート(WindowsマシンのGitBash経由)を行っています。メインディスク上の空き領域がなくなるため、-Tオプションを使用して一時ファイルを、ファイル全体を格納するのに十分な領域があるディスクに転送しています。事は、私はディスクスペースを見ていて、明らかに一時ファイルは元のファイルのものをすでに超えています。どれくらい先に行くのか分かりませんが、一時ファイルにどれくらいのスペースが必要かを予測できるルールがあるかどうかは疑問です。UNIXソートに必要なディスク容量
6
A
答えて
0
this unix.SE answerで説明されているように手動でバッチします。
ソートするのに十分小さいチャンクにコンテンツを分割する非常に基本的なクエリを見つけます。たとえば、単語のファイルの場合は、grep ^a …
,grep ^b …
などのようなクエリを作成できます。一部の項目は、他の項目より細分性が必要な場合があります。それはgzipでのデフォルトgzip -6
とほぼ同じ速さですので、私はxz -0
を使用してい
#!/bin/bash
for char1 in other {0..9} {a..z}; do
out="/tmp/sort.$char1.xz"
echo "Extracting lines starting with '$char1'"
if [ "$char1" = "other" ]; then char1='[^a-z0-9]'; fi
grep -i "^$char1" *.txt |xz -c0 > "$out"
unxz -c "$out" |sort -u >> output.txt || exit 1
rm "$out"
done
echo "It worked"
まだそれはスペースを節約で非常に良いでしょう:
あなたがスクリプト好きなことができます。終了値sort -u
を保存するために最終出力から省略しましたが、代わりにサイズチェック(iirc、出力がゼロで失敗する)を使用してsort -u |xz -c0 >> output.txt.xz
を使用すると、xz(およびgzip)コンテナによってアーカイブを連結できます(私も前にwritten about thatでした)。
各grepの実行の出力がすでにソートされているので、これは(0
がa
などの前にある、1
の前で)動作しますが、最終的な組み立てがsort
(ノート、「その他」を介して実行する必要はありません。 grepの-i
フラグを削除し、さらに{A..Z}
を繰り返して大文字と小文字を区別することもできます)。個々の反復はまだソートされている必要がありますが、うまくいけば管理可能です。
すべての反復を完了して「それが働いた」と言う前にプログラムが終了した場合、試した最後の反復に対してより離散したバッチでスクリプトを編集できます。以前のすべての反復は、output.txtに正常に保存されているので、すべて削除してください。
関連する問題
- 1. Lucene用に必要な空きディスク容量IndexWriter.ExpungeDeletes()
- 2. MemSQLサーバは大きなディスク容量を必要とします
- 3. ラテックスレンダリングにはMediaWikiのディスク容量が必要ですか?
- 4. MySQLクエリに必要な一時ディスク容量を見積もる方法は?
- 5. トーチ:テンソル対テーブル:ディスク容量
- 6. VirtualBoxディスク容量拡張
- 7. Linuxサーバーのディスク容量
- 8. iOS:コアデータとディスク容量
- 9. Oracle 12c:無駄なディスク容量とパフォーマンス
- 10. メディアウェブサイトにはどのくらいのディスク容量が必要ですか?
- 11. cmdバッチファイルによる空きディスク容量
- 12. ディスク容量に関するスクリプト
- 13. 容量のないクラウドの最適化(必要な容量予測)
- 14. Docker Toolboxのディスク容量を増やす
- 15. SQLデータベースのディスク容量を減らす
- 16. Maria DB推奨RAM、ディスク、コア容量?
- 17. Redshiftでのディスク容量とクラスタ
- 18. XNAでWindows 7/8およびXBoxゲーム開発に必要なディスク容量はどれくらいですか?
- 19. IIB - 実行グループに十分なディスク容量
- 20. android/iosで利用可能なディスク容量を知るには?
- 21. UNIXのソート中にディスクの使用を最小限にする
- 22. HDFS構成の容量がdfsadminコマンドの元のディスク容量より小さい
- 23. カフカクラスタv0.8.1.1のディスク容量の合計と使用可能容量は?
- 24. TFS 2015 - ディスク容量の永続的な減少
- 25. ディスク上の空き容量が更新されない
- 26. Subversionリポジトリ用にどれくらいのディスク容量を確保する必要がありますか?
- 27. Gitリモートリポジトリのディスク容量がはるかに小さい
- 28. Bash/Unixのファンダメンタルズに必要な情報
- 29. MSIパッケージの最小ディスク容量を設定します
- 30. Stakcdriver:空きディスク容量を確認する
UNIXソートがGNUソートに類似している場合、初期パスはRAMサイズに基づいて一時ファイルを作成します。メモリにソートするために使用できる1GBのRAMがあると仮定すると、500GBのファイルが作成され、次にそれらのファイルに16ウェイのマージが繰り返されます。また、各マージ後にファイルを削除すると仮定すると、各ファイルはクラスタ(ファイル割り当て)サイズの境界に丸められた516ギガバイトのスペースが必要になります。最後のマージでは、必要なディスク容量はファイルサイズの2倍になります(クラスタボンダリに切り上げられます)。 – rcgldr
ラット!私はいくつかのストレージに投資しなければならないようです。 – Thoughtcraft
その最後のマージは一時フォルダにもありますか? 1つのディスクに2つのファイルの完全なコピーを作成することを避けるために、出力をtempとは別の場所に指示しました。 – Thoughtcraft