Zadejte hledaný výraz...

Parsování velkých JSON?

Martin
verified
rating uzivatele
(62 hodnocení)
30. 12. 2019 14:01:38
Napsal TomášX;1559863
Autor se ptá na poměrně základní věc a tak mu doporučovat jiný jazyk není asi ta nejlepší volba, zůstal bych u php :).
Zase ze mně nedělej blba :-). To že se to musí načítat postupně mi bylo jasný už než jsem psal vlákno. Načítal jsem postupně v minulosti 2GB csv a 400 MB XMLko. Čekal jsem jen tip na nějakou knihovnu, protože jsem jednu vyzkoušel, ta mi nešla a nechtěl jsem to dělat pokus omyl. Tak jsem se jen prostě ptal na ověřený postup.
JInak jen pro info, bez použití nějaké knihovny mi na localhostu trvá v PHP dekódování celého jsonu necelé 2 sekundy, jen to zabere 1445 MB paměti a ty prostě na hostingu nemám.
Ale už to je vyřešené jinak.
30. 12. 2019 14:01:38
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429067
Napsal Martin Kejzlar;1561252
...
JInak jen pro info, bez použití nějaké knihovny mi na localhostu trvá v PHP dekódování celého jsonu necelé 2 sekundy, jen to zabere 1445 MB paměti a ty prostě na hostingu nemám.
...
Ta paměť je přesně ten důvod, proč na jakékoliv parsování naní PHP vhodné :-). Jak jsi to nakonec vyřešil?
31. 12. 2019 08:29:11
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429066
ne
verified
rating uzivatele
(22 hodnocení)
31. 12. 2019 09:21:21
obcas sa s pamatou da pracovat, len navrh musi byt vymysleny idealne tak, ze data sa spracovavaju postupne a kazda cast ktora je uz spracovana sa nasledne zlikviduje z pamate napr.
priradenim NULL - zmizne hodnota premennej (aj vsetkym referenciam)..
unset zmaze len odkaz na premennu..
31. 12. 2019 09:21:21
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429065
Martin
verified
rating uzivatele
(62 hodnocení)
31. 12. 2019 10:14:16
Napsal tomas86;1561439
Ta paměť je přesně ten důvod, proč na jakékoliv parsování naní PHP vhodné :-). Jak jsi to nakonec vyřešil?
Je mi jasný, že když třeba Go má nějaké sekvenční načítání v základu, tak to tolik paměti nepotřebuje, ale pokud bych zpracovával v čemkoliv 200 MB json jako celek, tak by snad všechny jazyky potřebovaly dostupnou paměť několikrát vyšší, než je velikost souboru, ne? Uznávám, že 1500 MB je dost, ale třeba těch 600MB by to potřebovalo všude, ne?
Vyřešil jsem to úplně jinak. Zjistil jsem, že kolega má stejná data v XML, takže to beru z toho.
31. 12. 2019 10:14:16
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429064
ne
verified
rating uzivatele
(22 hodnocení)
31. 12. 2019 10:39:32
ked ziskas nespracovany "surovy" json o velkosti 200MB napr. pomocou file_get_contents, bude mat .... no prekvapivo 200MB
mozes ho "rozsekat" parserom napr.
https://github.com/salsify/jsonstreamingparser
jednotlive casti json postupne spracujes, vysledok ulozis, a spracovane data "vynullujes" a takto dookola..
pamat sa ti bude alokovat - 200MB + najvacsi kus spracovanych dat + nejaka rezia
bude to sice pomalsie, ale neprezeries pamat ako pri klasickych rieseniach typu json_encode atd...
nedavno som spracovaval 3000 fotiek (lepil som vodoznak), a memory usage < 80MB .. zaklad je len zahadzovat data, ktore uz su spracovane, a na ich uvolnene miesto pridu dalsie data ktore sa po nich spracovavaju
31. 12. 2019 10:39:32
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429063
Napsal Martin Kejzlar;1561450
Je mi jasný, že když třeba Go má nějaké sekvenční načítání v základu, tak to tolik paměti nepotřebuje, ale pokud bych zpracovával v čemkoliv 200 MB json jako celek, tak by snad všechny jazyky potřebovaly dostupnou paměť několikrát vyšší, než je velikost souboru, ne? Uznávám, že 1500 MB je dost, ale třeba těch 600MB by to potřebovalo všude, ne?
Vyřešil jsem to úplně jinak. Zjistil jsem, že kolega má stejná data v XML, takže to beru z toho.
Ono si jaksi nemusíš natáhnout celý JSON/XML/Text... do paměti. Můžeš třeba pracovat jen s části souboru. To pak nebudeš potřebovat tolik paměti. Já jsem tahal několika Gb soubory a tam PHP fakt nestačilo. Přešel jsem na GO ... a s využítím GoRutin a front to šlo hodně rychle. Ale, pokud jsi masochysta, dělej to v PHP :-). Mimochodem, právě ty Rutiny a možnost poslat si v ně programu zprávu, v PHP hodně chybí (spíš je celý koncept jazyka zamýšlen jinak).
31. 12. 2019 16:24:30
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429062
node
verified
rating uzivatele
(5 hodnocení)
31. 12. 2019 16:35:01
trepes strasne koniny
31. 12. 2019 16:35:01
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429061
ne
verified
rating uzivatele
(22 hodnocení)
31. 12. 2019 17:39:35
Napsal tomas86;1561535
Ono si jaksi nemusíš natáhnout celý JSON/XML/Text... do paměti. Můžeš třeba pracovat jen s části souboru. To pak nebudeš potřebovat tolik paměti. Já jsem tahal několika Gb soubory a tam PHP fakt nestačilo. Přešel jsem na GO ... a s využítím GoRutin a front to šlo hodně rychle. Ale, pokud jsi masochysta, dělej to v PHP :-). Mimochodem, právě ty Rutiny a možnost poslat si v ně programu zprávu, v PHP hodně chybí (spíš je celý koncept jazyka zamýšlen jinak).
Limity a obmedzenia kazdeho jazyka su najcastejsie v hlave programatora
31. 12. 2019 17:39:35
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429060
node
verified
rating uzivatele
(5 hodnocení)
3. 1. 2020 10:43:58
fyi https://hackernoon.com/json-lines-format-76353b4e588d
3. 1. 2020 10:43:58
https://webtrh.cz/diskuse/parsovani-velkych-json/strana/2#reply1429059
Pro odpověď se přihlašte.
Přihlásit