Samenvatting
Python met ijson verwerkt grote JSON-bestanden stapsgewijs, zonder het volledige document vooraf in het geheugen te laden.
ijson voor grote JSON-bestanden
KDnuggets beschrijft hoe Python omgaat met een JSON-bestand van 181 MB met gegevens over percelen in San Francisco. Met de ingebouwde functie json.load() leest Python het volledige document in en zet het om naar dictionaries, lijsten, strings en getallen.
In het experiment steeg het geheugengebruik daarbij van 43 MB naar 808 MB. Dat komt doordat de JSON-structuur niet alleen op schijf ruimte inneemt: Python maakt ook objecten aan voor alle inhoud, inclusief geometriecoördinaten die de analyse niet nodig heeft. ijson pakt dit anders aan met een iteratieve parser die onderdelen stapsgewijs verwerkt.
Waarom ijson telt bij JSON-verwerking
De keuze tussen json.load() en ijson hangt af van de omvang van het bestand en de manier waarop je de gegevens gebruikt. Voor kleine JSON-bestanden blijft de standaardmodule praktisch. Bij een grote FeatureCollection kan het onnodig laden van alle records en coördinaten het geheugengebruik sterk verhogen.
Streaming verandert de verwerkingsvolgorde. Je hoeft niet eerst het complete document in Python-objecten om te zetten voordat je relevante velden uit properties kunt selecteren. Dat past bij analyses waarbij slechts enkele waarden nodig zijn, zoals perceelnummer, bloknummer of straatnaam.
Voor BI-werk bestaat daarbij een duidelijke les: bestandsgrootte op schijf zegt niet hoeveel werkgeheugen een Python-proces nodig heeft. De interne structuur van JSON en de gekozen parser bepalen dat mede. ijson vormt in deze context een alternatief voor json.load(), niet een vervanging die voor elk bestand nodig is.
Concrete takeaway voor ijson
Meet het geheugengebruik voordat je grote JSON-bestanden in een pipeline opneemt. Gebruik json.load() voor kleine bestanden, maar test ijson zodra Python alleen geselecteerde velden hoeft te verwerken of een volledige dataset niet tegelijk hoeft te laden.
Verdiep je kennis
ETL uitgelegd — Extract, Transform, Load in gewone taal
Wat is ETL? Leer hoe Extract, Transform en Load werkt, het verschil met ELT, en welke tools je kunt gebruiken. Helder ui...
KennisbankWat is Power BI? Alles wat je moet weten
Ontdek wat Microsoft Power BI is, hoe het werkt, wat het kost en waarom het de populairste BI-tool ter wereld is. Comple...
KennisbankPredictive Analytics — Wat kan het voor jouw bedrijf?
Ontdek wat predictive analytics is, hoe het werkt en hoe je het inzet voor je bedrijf. Van de 4 niveaus van analytics to...