У меня есть 17 ГБ файл bzip2, который содержит 126 миллионов объектов JSON. По одному на каждой строке.
Я хотел бы выполнить некоторые вычисления на каждом объекте json, используя jq
.
К сожалению, обработка файла bzip2 занимает много времени.
- ) Я попытался поместить документ в /dev /shm, чтобы он был в оперативной памяти.
- ) У меня есть 56 ядер для работы и 256 ГБ оперативной памяти, поэтому я попытался
pbzip2 -d
, однако, похоже, это не дает мне никакого разумного ускорения.
pbzip2 -m5000 -d --stdout measurement.json.bz2 | pv -l -cN pbzip2 | parallel --pipe --line-buffered 'jq -rc "select(.value.error==null)"' | pv -l -cN results > out.res
К сожалению, это дает мне всего около 20k строк / с на уровне pbzip2, что занимает около 2 часов для полного просмотра документа.
Дело в том, что в документе содержится много независимых объектов JSON, я думаю, что нет необходимости распаковывать его сверху вниз. Есть ли способ распаковать файл bzip2 параллельно для каждой строки, чтобы лучше использовать распараллеливание?