我有大约 100k 个 gzip 压缩的 JSON 文件,它们总共等于大约 100GB。所有文件都在同一个目录中。我在我的 mac os x 上本地运行它。
我有几种不同的模式要匹配,并尝试以多种方式运行命令,但它们都需要几个小时才能完成。
find . -name "*.gz" | xargs zgrep pattern >> results.json
这工作正常,但需要大约 4 小时才能完成。
我试图将它与一种或多种模式并行化:
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?