126 milyon json nesnesi içeren 17GB bzip2 dosyam var. Her satırda bir tane.
Kullanarak her json nesnesinde bazı hesaplamalar yapmak istiyorum. jq.
Ne yazık ki, bzip2 dosyasının işlenmesi yaş alır.
- ) Belgeyi / dev / shm dizinine koymayı denedim.
- (Çalışmak için 56 çekirdeğim ve 256GB koç kullandım.
pbzip2 -dAncak, sıkıştırmayı açmak bana makul bir hız kazandırmıyor gibi görünüyor.
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
Ne yazık ki, bu bana sadece pbzip2 düzeyinde 20k satır / s verir, bu da belgede tam bir tarama için yaklaşık 2 saat sürer.
Mesele, belgede birçok bağımsız JSON nesnesi bulunduğundan, yukarıdan aşağıya dekompresyonu kaldırmanın gerekli olmadığını düşünüyorum. Paralelleştirmeyi daha iyi kullanmak için paralel başına bir bzip2 dosyasını sıkıştırmalı şekilde açmanın bir yolu var mı?