約 100GB に相当する約 100k の gzip 圧縮された JSON ファイルがあります。すべてのファイルは同じディレクトリにあります。これを mac os x でローカルに実行しています。
一致させるパターンがいくつかあり、さまざまな方法でコマンドを実行してみましたが、すべて完了までに数時間かかります。
私はこのコマンドから始めて、こことここから引っ張ってきました:
find . -name "*.gz" | xargs zgrep pattern >> results.json
これは正常に機能しますが、完了するまでに約 4 時間かかります。
私はそれを1つ以上のパターンで並列化しようとしました:
find . -name "*.gz" | parallel zgrep pattern >> results/melanys.json
find . -name "*.gz" | parallel zgrep -e pattern1 -e pattern2 -e pattern3 -e pattern4 >> results/melanys.json
これらは確かに複数の zgrep プロセスを生成しますが、ほとんどの場合、それらはアイドル状態であり、(単一パターンのソリューションでは) より速く実行されないようです。また、複数パターンのソリューションは、シャットダウンすることを決定する前に 8 時間実行されていました。それを下げます。
zgrep にこれほど時間がかかるとは思っていませんでした。私の希望は、このデータ セットから関連する行を zgrep し、それらを分析により適した構造、おそらくローカル データベースにプラグインすることでした。
zgrepを高速化する方法はありますか?