Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Parsování velkých JSON?

Martin
verified
rating uzivatele
(62 hodnocení)
17. 12. 2019 12:49:50
Ahoj.
Čím parsujete velkém JSON soubory, aby to dělalo asi nějak postupně a ohledem na dostupnou pamět. . Musím zpracovat 200 MB JSON a i když mám limit paměti 1GB, tak to nestačí.
Díky za pomoc,
Martin
17. 12. 2019 12:49:50
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429082
a mas je fakt blbe strukturovany, nebo alespon object per radek ?
ja mam obrovsky pole jednotlivych malych a tam me to vychazi per radek, takze ctu soubor po radku a zpracovavam az ty dilci json stringy
17. 12. 2019 13:13:13
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429081
node
verified
rating uzivatele
(5 hodnocení)
17. 12. 2019 13:38:20
Musím zpracovat 200 MB JSON a i když mám limit paměti 1GB
nejak ti tu nesedi matika...
osobne neverim ze taky velky json bude jeden objekt. skor pojde o nejake pole(logy?), nie? ak ano tak proste naparsujes jednu hodnotu za druhou.
ak ide naozaj o objekt tak si napis vlastny parser a prechadzaj postupne hodnoty jednu za druhou, len sledujes strom a to je vsetko. prakticky normalny lexer.
ps: 10 sekund googlenia https://github.com/halaxa/json-machine
17. 12. 2019 13:38:20
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429080
TomasX
verified
rating uzivatele
(4 hodnocení)
17. 12. 2019 14:14:43
pozor, rozložení json na objekty zabere více paměti než je velikost jsonu. Jedna věc je parsování a druhá věc je zpracování, nejlépe, když to celé napíšeš jak micro batching po X položkách najednou, pak jsi schopný parsovat libovolnou velikost. V rámci ETL procesů parsujeme i 1TB jsony.
V php kluci používají https://github.com/Rodenastyle/stream-parser, u některých starších projektů vidím https://github.com/salsify/jsonstreamingparser. Máš-li vlastní vps, je možné použít parsování přes https://github.com/crazyxman/simdjson_php, ale je s tím více nízkoúrovňového experimentování.
17. 12. 2019 14:14:43
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429079
Martin
verified
rating uzivatele
(62 hodnocení)
17. 12. 2019 23:55:34
Díky. Zkusím nějaké ty knihovny. Jsou to desetitisíce menších objektů obalené jedním velkým.
17. 12. 2019 23:55:34
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429078
V tomto případě se vykašlat na PHP a použít třeba GOLand. PHP na velké importy prostě není dělané.
18. 12. 2019 08:11:04
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429077
TomasX
verified
rating uzivatele
(4 hodnocení)
18. 12. 2019 08:25:48
nevidím důvod přecházet na jiný jazyk, 100 mb není velký import, s go musíš řešit znovu věci jako napojení na db, logování, na provoz potřebuješ alespoň vps atd. Když už člověk má linux k dispozici, existuje tam na tohle pěkný balíček jq, kterým je možné data předpřipravit a rozdělit na menší kousky
18. 12. 2019 08:25:48
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429076
node
verified
rating uzivatele
(5 hodnocení)
18. 12. 2019 10:04:43
a) Goland je IDE, nie jazyk
b) PHP nema problem s importom velkych dat, len musis citat jeden riadok za druhym a nie cely subor naraz(na jazyku nezalezi), co v tomto pripade je problematickejsie
c) "s go musíš řešit znovu věci jako ... logování" ... ???????????????
d) "na provoz potřebuješ alespoň vps atd" ???????????????????????????????????????????????????????????????????????
18. 12. 2019 10:04:43
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429075
TomasX
verified
rating uzivatele
(4 hodnocení)
18. 12. 2019 10:12:15
ad c) předpokládám, že u aplikace nějak spravuješ a kontroluješ logy, apache s php ti je aspoň někam ukládá a máš je k dispozici, go je běžná aplikace, kde si tyhle zbytečnosti musíš zajistit sám, nic jako error log nemá a pokud si výstup neukládáš, nemáš nic, zmiňuji to, protože přesně na tyhle problémy narážím, když chce někdo pomoc řešit problém s go
ad d) na běžném web hostingu go nespustíš, buď musíš mít nějaký "go hosting", kde zase nefunguje php nebo vlastní vps, kde si spustíš cokoliv
18. 12. 2019 10:12:15
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429074
node
verified
rating uzivatele
(5 hodnocení)
18. 12. 2019 10:37:21
ok, beriem. technicky mas samozrejme pravdu, ale myslim ze tu zachadzame znacne mimo temy uz a do teritoria ifttt.
18. 12. 2019 10:37:21
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429073
TomasX
verified
rating uzivatele
(4 hodnocení)
18. 12. 2019 10:55:11
jo, už to je mimo téma, nechtěl jsem to moc rozvádět, ale jen upozornit, že jiný jazyk může přidat více problémů než řeší
18. 12. 2019 10:55:11
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429072
Ano, GOLand je IDE ... měl jsem samozřejmě namysli GOLang. Pokud se bavíme o klasickém hostingu, tak vás stejně kopnou do zadku, když se tam budete snažit importovat tak velký JSON. Většina webhostingu je stejně hodně omezeno na paměť. Co se týče GOLang, tak má samozřejmě spoustu knihoven pro logování atd. Pokud to chceš pomalu a nespolehlivě, dělej importy přes PHP. Pokud to chceš rychle během pár sekund, tak zvol jiný jazyk.
19. 12. 2019 07:23:18
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429071
TomasX
verified
rating uzivatele
(4 hodnocení)
19. 12. 2019 07:35:01
jak píše node, trik je v tom, že to nesmíš načítat celé do paměti, ale streamovaně zpracovat. PHP7 je na tom s rychlostí dobře a odkazoval jsem knihovny, které tohle umí načíst bleskurychle.
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 :).
19. 12. 2019 07:35:01
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429070
Napsal TomášX;1559863
jak píše node, trik je v tom, že to nesmíš načítat celé do paměti, ale streamovaně zpracovat. PHP7 je na tom s rychlostí dobře a odkazoval jsem knihovny, které tohle umí načíst bleskurychle.
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 :).
PHP7.x je sice o něco rychlejší, ale i tak je to pomalý šnek. A to píšu jako kovaný PHPkář. Snažil jsem se velké JSON načítat sekvenčně, ale vždy to byl celkem opruz, nebo to fakt nebylo ono. V GoLang se to načítá poměrně snadno právě sekvenčně ... ale nebudu tu už dále psát o tomto jazyku. Jen jsem to chtěl doporučit jako možnou rychlou alternativu.
19. 12. 2019 07:42:26
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429069
node
verified
rating uzivatele
(5 hodnocení)
19. 12. 2019 10:57:13
kazdy kdo pinda na php je u mna naprosty idiot co ma nalepku programator ale realne vie hovno 🤷🏻*♂️
19. 12. 2019 10:57:13
https://webtrh.cz/diskuse/parsovani-velkych-json/#reply1429068
Pro odpověď se přihlašte.
Přihlásit