0

私はこのスレッドで説明されているものと同様のことを達成しようとしています:最初の列の内容に基づいて巨大なcsvファイルを分割する方法は?

そこでは、最善の解決策は、仕事をするawkを使用することであるように思われました。ただし、非常に大規模なcsvファイルを扱っているので、ディスクI / Oの速度が原因で、新しいコピーを作成せずにファイルを分割したいと思います。新しいコピーを作成せずに元のファイルを分割する方法はありますか?

4

2 に答える 2

3

あなたが何を求めているのかよくわかりませんが、あなたの質問が次のようなものである場合:ディスク?" という場合、答えはノーです。

awk、Python、またはテキスト エディタを使用するかどうかに関係なく、最初のファイルを反復処理し、「セグメント」を新しいファイルとしてディスクに書き戻す必要があります。ただし、事前に最初のファイルのコピーを作成する必要はありません。

于 2012-06-20T13:57:07.353 に答える
0

「ファイルの分割」には、依然として RAM とディスク I/O が必要です。それを回避する方法はありません。それはまさに世界がどのように機能するかです。

ただし、システムに対する I/O バウンド プロセスの影響を確実に減らすことができます。いくつかの明白な解決策は次のとおりです。

  1. RAM ディスクを使用して、ディスク I/O を減らします。
  2. SAN ディスクを使用して、ローカル ディスク I/O を減らします。
  3. I/O スケジューラを使用して、ディスク I/O の速度を制限します。たとえば、ほとんどの Linux システムは、この目的のためにioniceユーティリティをサポートしています。
  4. ファイルをチャンクアップし、バッチ キューを使用して CPU 負荷を軽減します。
  5. ファイル処理中の CPU 負荷を軽減するには、 niceを使用します。

ファイルを扱っている場合は、I/O を扱っています。システムの制約の中でそれを最大限に活用するのはあなた次第です。

于 2012-06-20T19:56:03.400 に答える