Linuxで巨大なリスト(130Gb)を並べ替える

Linuxで巨大なリスト(130Gb)を並べ替える

sortLinuxで巨大なリスト(130GB)を作成しようとしています。そのうちのいくつかは次のとおりです。

@K00188:14:H2LMFBBXX:6:1101:27440:1668 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:30262:1668 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:6501:1686 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:18133:1686 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:21827:1686 1:N:0:0_I_CGATGT

問題は、その期間にRAMが不足していることですsort

以前の質問にはいくつかの解決策(sort --parallelPythonスクリプトなど)がありましたが、私の手には機能しませんでした。

続行したいが、sortオプションを使用すると、次のエラーメッセージが表示されます。--parallel

sort: unrecognized option '--parallel=2'
Try `sort --help' for more information.

大きなリストをソートするために書かれたPythonスクリプトがある場合は、試してみたいと思います。

おすすめメニューとは何ですか?

答え1

sort(たとえば、一部の削除された実装を除くbusybox)は、制限された量だけを使用し、その制限に達すると一時ファイルに依存するため、メモリによって制限されません。

ディスク容量が不足する可能性が高いです。使用している準備領域に約130 GBの空きディスク容量が必要ですsort(書き込みファイル自体を使用しない限り、結果を保存するために使用されるディスク容量に追加sort -o mybigfile mybigfile)。

ファイルシステムに十分な空き容量がない場合は、空きディスク容量をより多くの場所/tmpに設定します(いくつかの実装されたオプションも参照)。$TMPDIR-Tsort

TMPDIR=~/tmp sort my-big-file > sorted

必要な一時ディスク容量を減らすために、一部のsort実装では一時ファイルを圧縮するように指示することがあります。 CPUで使いやすいコンプレッサー(lzop回転ディスクのファイルシステムなど)を選択すると、パフォーマンスが向上する可能性があります。

TMPDIR=~/tmp sort --compress-program=lzop my-big-file > sorted

答え2

大容量リスト(130 GB)を並べ替えようとしています。

巨大なテキストファイルを1行ずつ並べ替えたいです。

ソート: 認識できないオプション '--parallel=2'

これは録音された最近のGNU coreutilsで許可されているオプション。残念ながら、GNU corutilsはありませんが、sort 他にもあります。したがって、コンパイルしてインストールすることをお勧めします。最近 GNUコアツール、例:coreutils-8.27源泉(2017年夏)。提供されたシステムが混乱するのを防ぐために、--program-suffix=-my スクリプトconfigureを使用してインストールできます。sort-mysort

(ルートがなくてもthenconfigureなどを使用できます。--prefix=$HOME/pubmake install$HOME/pub/bin/....)

これが不可能な場合は、次のものを使用できます。分けるを押して、それぞれの小さなチャンクを並べ替えてマージします(使用sort --merge)。

もう1つの可能性は、この大きなファイルを解析していくつかのファイルに入れる小さなPythonスクリプトを書くことです。SQLiteデータベース。

最新のGNUをダウンロードして使用することをお勧めします。コアツール(他の方法を使用すると時間がかかります。)これが最も実用的な方法です。ソートを実行するには、ファイルシステムに十分な追加の空き容量(150 GB程度)が必要になる場合があります。

ソースからGNUユーティリティをコンパイルしたことがない場合は、次の手順を実行することをお勧めします。

  • たとえば、ブラウザのcoreutilsソースtarballを使用または取得しますwget http://ftp.gnu.org/gnu/coreutils/coreutils-8.27.tar.xz

  • tar xvf coreutils-8.27.tar.xz (最新のGNU tarを使用して)解凍しました。それ以外の場合は、unzipを使用してxz -d coreutils-8.27.tar.xz からunzipを使用してください。tar xvf coreutils-8.27.tar

  • GNUユーティリティをインストールするためのディレクトリの作成mkdir $HOME/gnu/

  • coreutilsソースディレクトリを入力してください。cd coreutils-8.27

  • コンパイル前の構成:

     ./configure --prefix=$HOME/gnu/ --program-suffix=-my
    

エラーメッセージが表示された場合は、システムを修正してみるか(Cコンパイラなどのユーティリティが欠落しているため)、助けを求めてください。読む自動設定そして構成スクリプトオプションについて学びます。

  • それを構築

    make
    
  • インストールしてください(ビルドがうまくいったら)

    make install
    

(上記のすべてのエントリを実行するためにroot権限は必要ありません)

  • その後、ソートに使用されます$HOME/gnu/bin/sort-my$HOME/gnu/bin/簡単に入力可能sort-my

関連情報