Bzip2 dosyasını satır satır ayıkla


1

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.

  1. ) Belgeyi / dev / shm dizinine koymayı denedim.
  2. (Çalışmak için 56 çekirdeğim ve 256GB koç kullandım. pbzip2 -d Ancak, 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ı?

Yanıtlar:


1

bzip2 ve arkadaşlar tek dişli. Bu, sıkıştırılmış dosyaların olduğu anlamına gelir. düzenli bzip2 ile dekompresyonda hızlanma görmez pbzip2. Bu, birçok çekirdekli kurulumlarda çok az takdir edilen bir gerçektir.

Yani temelde, veriminizi sınırlandırarak tek bir çekirdekte yağıyorsunuz. Sıkıştırma tarafını paralel dostu bir kompresör kullanma olanağınız olmadıkça, bundan haberim yok.


Teşekkür ederim. Paralel dostu bir şey önerebilir misiniz?
mightyuhu

Sadece kullan pbzip2 sıkıştırma ucunda da - ters yön iyi çalışıyor.
Eugen Rieck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.