大規模なデータセットをマージする最速の方法

大規模なデータセットをマージする最速の方法

私は大きなデータセット〜100 GBとより小さなcsvファイル〜100,000を持っています。すべての.csvファイルを一緒にマージする最速の方法が欲しいです。ファイルは2つの異なるフォルダにあります。

  1. 誰かがglobを使用する代わりに、2つのフォルダにあるファイル名を含む2つのファイルを作成し、そのファイル名を使用してディレクトリを繰り返し出力ファイルを追加することを提案しましたls *。 Linuxを使ってどのようにこれを達成できますか?私はこれについて非常に新しいものであり、誰でも私を助けることができればとても感謝します。
  2. 他の方法がある場合は、データセットを考慮して結果を得てください。

ベストアンサー1

私が正しく理解したら、すべてのファイルから1つの(100GBサイズ?)ファイルを作成したいと思います。この場合、猫は次のようにすることができます。

cat foo1 foo2 bar1 bar2 > newfile

またはあなたの場合

cat folder1/* folder2/* > newfile

これにより、フォルダ1とフォルダ2のすべてのファイルがインポートされ(テキストとして)新しいファイルにマージされます。 catはファイルを末尾にのみ追加します(つまり、行を追加します)。

ただし、これにより古いファイルが保持されるため、2倍のスペースが必要になり、個別に処理することもできます。

for f in folder1/* folder2/* ; do
    cat $f >> newfile && rm $f
done

これにより、すべてのファイルが追加され、削除されます。

これがあなたが探しているものですか?

おすすめ記事