並び替え(ソート,sort)、重複行削除:巨大テキストファイル

鈴川エディタホームページ


2015年04月03日11:30 更新

並び替え(ソート、sort)と重複行削除

鈴川エディタはテキストファイル(CSVも含む)に対して重複行削除と並び替え(ソート,sort)が実行できます。重複行削除はオリジナルファイルの行の前後関係は維持しつつ重複行を削除します。並び替えは昇順、降順、ランダムがあり、重複行の削除もできます。

テキスト処理(重複行削除、並び替え)で扱うことができる対象テキストファイルのファイルサイズと行数は、メモリ容量、HDD(SSD)容量、CPU性能、対象テキストファイルの1行の文字数が大きいのか小さいのか、などの違いによって異なり、一概に決まりませんが、以下に目安を示します。いずれも1台のパソコンでN分割かN-N分割で実行する場合です。単一処理では大きいファイルサイズ、大きい行数の対象テキストファイルを扱うことはできません。

  1. 鈴川エディタ32bit版
    計算時間は数日~数週間かかります。
    最大メモリ:3GB
    1. 重複行削除
      • 行数:200億行
      • ファイルサイズ:2TB
    2. 並び替え(ソート)
      • 行数:1千億行
      • ファイルサイズ:10TB
  2. 鈴川エディタ64bit版
    計算時間は数週間~数ヶ月かかります。
    最大メモリ:OSの制限値
    1. 重複行削除
      • 行数:2000億行
      • ファイルサイズ:20TB
    2. 並び替え(ソート)
      • 行数:1兆行
      • ファイルサイズ:100TB

重複行削除では、行を削除するかどうかを示すデータを行数分だけ確保する必要があります。重複行削除を実行できる行数は、そのデータをメモリに確保できる行数によって決まります。100億行分のデータに要するメモリは約1.2GBです。200億行では約2.5GB、1000億行では約12.3GB、1兆行では約130GBが必要になります。並び替えはこのデータを必要としませんので、重複行削除より大きいファイルサイズ、大きい行数のテキストファイルを処理できるのです。

複数のパソコンで分業することによって、計算時間を劇的に短縮することができます。たとえば、2台ならば、計算時間を半分近くにできるでしょう。4台ならば1/3、16台ならば1/10、64台ならば1/50、128台ならば1/100に時間短縮を期待できます。複数パソコンによる分業機能は現在、鈴川エディタにありませんが、その機能の追加は難しいことではないと考えています。

1TB、100億行のテキストファイルの重複行削除、並び替えでは、使用パソコンの性能によって異なりますが、計算時間は数日かかります。数百GB、25億行程度であれば約1日です。上記に示すように、数TB~数十TB、数百億行~数千億行の超巨大テキストファイルでは数週間、数ヶ月という気が遠くなるような長時間を要します。時間はかかりますが、鈴川エディタはやり遂げることができます。

重複行削除と並び替えの計算方法、アルゴリズムはインターネットを通して学ぶことができますし、プログラムコードのサンプルも容易に見つけることができます。これを実際に試してみると、1GB、1000万行程度であれば、問題なくできるようです。出来のよいものは2000万行でも実行できます。数百MB~1GB、2000万行以下のテキストファイルであれば、一通りの勉強は必要ですが誰でも然したる苦労を必要とせずに、重複行削除、並び替えのプログラムを作成できるでしょう。

インターネットから手にすることができ、割合出来のよいと思われるソフトで、重複行削除と並び替えを試してみると、数GB、3000万行程度のちょっと大きめのテキストファイルに対して実行できるものは極めて限られるようです。5000万行となると実行できるものを見つけることができませんでした(ただし、ファイルサイズ約500MB、行数約1億行の並び替えを実行できるソフトが一つあります)。こういう中で鈴川エディタは10GB、1億行程度のテキストファイルを難なく実行できます。10GB、1億行なんて目じゃない。1TB、100億行でも実行できます。こういう巨大テキストファイルに対して重複行削除、並び替えができるのはパソコンのレベルでは世界で鈴川エディタ唯一つではないかと自負しています。



Copyright (c) 2000 - 2017 鈴木由彦(Yoshihiko Suzuki)
e-Mail:szkwjp@gmail.com
HomePage:http://www.szkwjp.com/