NDJSON naar Parquet omzetten

Hier zet je NDJSON naar Parquet om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. De omzetting gebeurt binnen je eigen browser, dus het bestand wordt nooit geüpload. Het werkt hetzelfde op Windows, macOS en Linux als op iPhone en Android, en het blijft werken als je de verbinding verbreekt.

  • Waar het draait In je browser. Het bestand wordt nooit geüpload.
  • Opnieuw opgebouwd Parquet werkt anders dan NDJSON. Het is dus niet het geleidelijke kwaliteitsverlies van een lossy codec: wat Parquet kan uitdrukken wordt getrouw weergegeven, en wat daar geen equivalent heeft blijft helemaal weg.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.
  • Goed om te weten Geneste objecten worden platgeslagen tot kolommen. Diep geneste gegevens verliezen hun vorm.

Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.

Voor wie deze omzetting bedoeld is

Deze pagina is voor iemand met een append-only bestand dat over tijd is gegroeid: velden die pas een derde van de weg verschijnen omdat een deploy ze heeft toegevoegd, en waarden die van type veranderen onder dezelfde sleutel. Dat is anders dan een API-dump met geneste structuur, waarvoor de aparte JSON-naar-Parquet-omzetting bedoeld is.

Schema-drift in een logbestand is precies het soort probleem dat deze omzetting eerlijk moet benoemen in plaats van te verbergen achter een geslaagde omzetting.

Wat er met geneste velden gebeurt

Records worden plat geslagen tot kolommen met een punt-gescheiden naam: `gebruiker.naam` voor een genest object, `labels.0` en `labels.1` voor de elementen van een array. Dat is dezelfde platslaglogica als bij CSV, TSV, SQL en XLSX op deze site.

Er komt dus geen letterlijke `[object Object]`-tekst en geen kommagescheiden array-tekst meer voor — die problemen zijn er, sinds de laatste update van deze engine.

Wat er gebeurt als een kolom van type wisselt

Parquet schrijft slechts vier fysieke typen: boolean, geheel getal, kommagetal en tekst. Elke kolom krijgt één type, bepaald over alle waarden in die kolom heen.

Komt in dezelfde kolom ergens een waarde voor die niet numeriek is — een lege string tussen anders numerieke waarden, of een tekstwaarde die per ongeluk in een numeriek veld terechtkwam — dan wordt de hele kolom als tekst geschreven, ook de rijen die er zelf numeriek uitzagen.

Wat er met grote getallen gebeurt

Een geheel getal buiten het bereik van een normaal 32-bit geheel getal wordt geschreven als kommagetal, nooit als een groter geheeltalig type. Dat is een bewuste keuze: een 64-bit geheeltalig type zou een exactheid beloven die het schrijfproces niet daadwerkelijk garandeert.

Voor de meeste logvelden — tijdstempels in milliseconden, tellers, ID’s binnen een normaal bereik — is dat geen probleem; bij een zeer groot ID buiten het normale bereik is het de moeite waard het resultaat te controleren.

Hoeveel dit scheelt in bestandsgrootte

Op een gegenereerde reeks van 50.000 bestelrecords met zes velden woog het NDJSON-bestand 4,8 MB tegenover 207 KB voor dezelfde data als Parquet — een factor van meer dan twintig. Dat verschil komt uit een gemeten test, niet uit een algemene belofte over Parquet.

De exacte verhouding hangt af van hoeveel herhaling en structuur in de data zit; een logbestand met veel identieke sleutels comprimeert doorgaans sterker dan een bestand met sterk wisselende velden.

Waar het bestand blijft tijdens het omzetten

De omzetting draait volledig in de browser; het bestand wordt niet naar een server gestuurd. De limiet op het gratis plan is 100 MB per bestand.

Voor een groot logbestand is dat ruim voldoende, gezien hoe compact Parquet als doelformaat is.

Batchgewijs meerdere logbestanden verwerken

Tot honderd NDJSON-bestanden tegelijk kunnen in één sessie worden omgezet, elk met een eigen voortgangsindicator, en het resultaat komt terug als losse Parquet-bestanden of als ZIP.

Bruikbaar wanneer een logrotatiesysteem elke dag een nieuw NDJSON-bestand aflevert dat in hetzelfde formaat moet worden gearchiveerd.

Wat er niet wordt gecontroleerd

Deze omzetting valideert het schema niet en waarschuwt niet expliciet wanneer een kolom door een enkele afwijkende waarde naar tekst omslaat — dat gebeurt stilzwijgend als onderdeel van het schrijfproces.

Voor een bestand waarvan de datakwaliteit onzeker is, is het de moeite waard om na de omzetting steekproefsgewijs te controleren of kolommen het verwachte type hebben.

Zo zet je NDJSON naar Parquet om

  1. Sleep je NDJSON-bestand op deze pagina, of klik om er een te kiezen.
  2. Kies Parquet als doel. De omzetting gebeurt in je browser en het bestand wordt niet geüpload.
  3. Download het klare Parquet-bestand.

NDJSON of Parquet: wat er verandert

NDJSON vergeleken met Parquet
NDJSONParquet
Volledige naamNewline-Delimited JSONApache Parquet
Bestandsextensie.ndjson, .jsonl.parquet
Mediatypeapplication/x-ndjsonapplication/vnd.apache.parquet
CompressieZonder verlies — er gaat niets weg
Voor het eerst gepubliceerd20132013
Uitgegeven doorApache Software Foundation
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogenJSON, CSVCSV, JSON

Het resultaat openen

pandas leest zowel NDJSON als Parquet, dus je kunt het resultaat naast het origineel leggen zonder een tweede programma.

Waarvoor elk formaat bedoeld is

Parquet komt van Apache Software Foundation en stamt uit 2013. pandas, Apache Spark en DuckDB lezen het formaat.

Van NDJSON naar Parquet: veelgestelde vragen

Wordt mijn NDJSON-bestand ergens heen geüpload?

Nee. Deze omzetting gebeurt volledig in je browser, dus het bestand verlaat je apparaat niet. Je kunt het zelf nagaan: open het netwerktabblad van de ontwikkelaarshulpmiddelen en zet iets om. Je ziet de pagina zelf en de verzoeken voor statistiek en advertenties waarmee deze dienst betaald wordt, en geen enkel verzoek dat je bestand meeneemt. De motor achter juist dit paar is parquet-wasm, een WebAssembly-versie van de Apache Arrow-lezer; je browser haalt die één keer op en bewaart hem.

Is NDJSON naar Parquet omzetten gratis?

Ja. Geen account, geen watermerk en geen dagtegoed dat opraakt: het draait op je eigen machine, dus je mag zo vaak terugkomen als je wilt. De browser verwerkt bestanden tot 100 MB, 100 tegelijk. parquet-wasm wordt naar je eigen machine gehaald en draait daar, en daarom staat er geen teller op.

Gaat er kwaliteit verloren bij het omzetten van NDJSON naar Parquet?

NDJSON en Parquet beschrijven de inhoud op fundamenteel andere manieren. De omzetting is daarom een reconstructie en geen kopie: getrouw, maar niet byte voor byte identiek. Geneste objecten worden platgeslagen tot kolommen. Diep geneste gegevens verliezen hun vorm.

Moet ik iets installeren om een Parquet-bestand te openen?

Voor de omzetting niet: die gebeurt in de browser die je al open hebt staan. Om het resultaat te openen heb je daarna het programma nodig waarmee je apparaat Apache Parquet normaal weergeeft.

Meer over deze formaten